模式窗體中的按鈕
模式窗體中(比如visual studio 2005中的“選項”對話框)一般會有兩個基本按鈕,一個[確定]按鈕用來提交,另一個[取消]按鈕用來撤銷提交,有時候會增加一個[應用]按鈕,不過像“幫助”菜單中的“關於”模式窗體可能就只有一個[確定]按鈕。Windows窗體為用戶操作友好性提供了比較好的支持。我們可以在Form設計界面的屬性設置中找到AcceptButton和CancelButton兩個屬性,默認值為空即顯示(無)。在屬性中可以通過選擇窗體上的按鈕來設置值。屬性修改生成的代碼如下。
先定義兩個Button,
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Button buttonCancel;
窗體的“接受”按鈕。如果設置了此按鈕,則用戶每次按“Enter”鍵都相當於“單擊”了該按鈕。
this.AcceptButton=this.buttonOK;
窗體的“取消”按鈕。如果設置了此按鈕,則用戶每次按“Esc”鍵都相當於“單擊”了該按鈕。
this.CancelButton = this.buttonCancel;
可見可以通過快捷鍵來方便的訪問特定按鈕,但這個有一些例外,比如窗體焦點剛好在buttonCancel上,當按{Enter}時實際按下的鍵會是buttonCancel而不是buttonOK,如果焦點停在第三個按鈕上,那{Enter}按下相當於點擊了該按鈕。另一個細節是通過鼠標點擊按鈕和快捷鍵操作按鈕的表現行為不一樣,快捷鍵操作Button不會顯示按鈕被按下的顯示效果,看上去什麼都沒有發生。
模式窗體的打開與關閉
談到模式窗體的打開,一般通過Form.ShowDialog ()方法或她的一個重載Form.ShowDialog (IWin32Window)來實現,其中後一個方法將窗體顯示為具有指定所有者的模式對話框。如下代碼所示,
OptionForm form = new OptionForm();
//form.ShowDialog();
form.ShowDialog(this);
對於指定所有者方式打開的模式窗體可以在模式窗體內部獲取主窗體的引用,
//在模式窗體內部訪問所屬窗體
MainForm form=this.Owner as MainForm;
注意,如果以Form.ShowDialog ()方式打開,那Form.Owner屬性會是空引用。