淺談C# 非模式表單show()和模式表單showdialog()的區別_C#教程

來源:互聯網
上載者:User

對話方塊不是模式就是無模式的。強制回應對話方塊,在可以繼續操作應用程式的其他部分之前,必須被關閉(隱藏或卸載)。例如,如果一個對話方塊,在可以切換到其它窗 體或對話方塊之前要求先單擊“確定”或“取消”,則它就是模式的。

一、如何調用

任何表單(派生於基類Form的類),都可以以兩種方式進行顯示。
//非模式表單
From qform=new Form();
qform.Show();
//模式表單
Form qform=new Form();
qform.ShowDialog();

一、控制權上的區別

Form.Show建立新表單後(非模式),立即返回,且沒有在當前活動表單和新表單間建立任何關係,即在保持新視窗的情況下關閉(或最小化)現有 表單或在保留現有表單情況下關閉(或最小化)新視窗,都是可以的。

Form.ShowDialog建立模式表單,即只有當建立的新視窗關閉之後,原有表單才能重新獲得控制權。即如果不關閉新視窗,將無法對原活動窗 口進行任何操作。對新視窗進行的最小化、還原將會和原視窗一起進行,但是新視窗的關閉對原視窗沒有影響。

需要注意的是,不管是何種情況,只要主表單被關閉了,或主程式結束了,那麼Application.Run將會關閉所有表單,不管它是模式還是非模 式。

二、Owner屬性帶來了什麼

上面所講的是不建立擁有關係時的表單。當為表單間建立了擁有關係,情況就會有所變化。

1、首先看非強制回應情況。為非模式新視窗建立擁有關係的方法是修改其Owner屬性。(預設情況下,非強制回應視窗不存在擁有者)

form.Owner=this; //假設當前視窗是新視窗的擁有者
form.Show();

很顯然,建立的非模式表單已經被認為是原活動表單的子表單,原視窗的行為將會影響新視窗,所以我們姑且把它們稱作父視窗和子視窗之間的關係。

那麼,改動後會有什麼顯著的變化呢?主要有兩點:

第一,父視窗最小化、還原或關閉,子視窗也將隨之最小化、還原或關閉。(注意,在未添加擁有關係之前它們是互不相干的。)反過來,子視窗的最小化、 還原或關閉對父視窗不構成影響。

第二、在工作列上,只顯示父表單的表徵圖而不顯示子表單的表徵圖。(在父子關係誕生之前,各表單在工作列上有各自表徵圖。)

2、模式表單的情況下。用ShowDialog方法顯示新表單時,當前表單被認為是新表單的邏輯擁有者。所謂邏輯擁有者,是指預設情況下,用 ShowDialog而明確指定擁有者的話,Owner值為null。但無論Owner屬性設定與否,與使用者的互動行為都是一樣的。

設定Owner屬性的方法除了同上述Show情況下的那種之外,還有一種,即當作ShowDialog的參數傳遞。如:

form.ShowDialog(this); //當前表單為新表單的擁有者。

也就是說,如果你指定了第三個表單為新強制回應視窗的Owner,的確,新視窗和原視窗可能斷絕了關係,而是作為第三個視窗的子視窗的身份出現。但是事 實上,它們間的這種父子關係的建立並沒有在行為上給我們帶來跟多驚喜。比如,新視窗關閉前,父視窗還是不能獲得控制權等等,一切行為都沒有變。

三、總結與說明

1、Show方法建立的表單在行為上具有不確定性,Owner屬性對此責任重大。

2、當前使用中視窗和用ShowDialog建立的強制回應視窗之間有著與生俱來的關係,這一關係的承載者是可以改變的,但是這一關係的建立或解除並不能 給表單的行為帶來任何變化。

3、一個表單可以擁有一個可選的擁有者,同時可以成為多個表單的擁有者。

4、這裡所指的子表單和父表單並不是真正意義上的,而是為了加深理解而杜撰出來的不科學的稱法。應與window表單術語中的父表單和子表單區分 開,不可混淆。後者存在邊緣裁剪。

以上這篇淺談C# 非模式表單show()和模式表單showdialog()的區別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.