C#中Show()和ShowDialog()的區別

 

窗體和對話框要麼是有模式的,要麼是無模式的。“模式”窗體或對話框必須關閉或隱藏,然後您才能繼續使用應用程序的其餘部分。

顯示重要消息的對話框應始終是有模式的。模式對話框的一個示例是 Visual Studio 中的“關於”對話框。MessageBox是您可以使用的一個模式窗體。有模式對話框顯示出來以後,那麼開始打開的窗體或對話框就不能再獲得焦點了。

“無模式”窗體讓您在此窗體與另一窗體之間變換焦點,而不必關閉初始窗體。用戶在該窗體顯示的同時可繼續在任何應用程序的其他位置工作。例如:文本編輯軟件裏面的搜索功能,就是一個無模式的,因爲搜索對話框出來以後,還可以操作編輯本文,即它不影響其他窗體獲得焦點。

  將窗體顯示爲有模式對話框用form1.ShowDialog()方法。這個方法有一個可選參數 owner,該參數可用於指定窗體的父子關係。例如:

在Form1代碼段中:

Form2 f2=new Form2();

f2.ShowDialog(this);//this表示Form1當前實例

這樣f2實例就和Form1實例建立了一個父子關係,可以相互通訊。

如果沒有使用f2.ShowDialog(this)而直接使用的是無參的,要定義父子關係,則需要語句f2.owner=this;

 將窗體顯示爲無模式對話框則用form1.show()方法。

注意   如果窗體顯示爲有模式,則在關閉該對話框之前,不執行 ShowDialog 方法後面的代碼。但是,當窗體顯示爲無模式時,那麼該窗體顯示之後,會立刻執行 Show 方法後面的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章