上面的代碼都正常,就是事件寫多了,對上面代碼進行修改,去掉[取消]按鈕事件和窗體關閉事件以及相關的事件處理程序。首先需要在窗體構造函數中通過設置按鈕的DialogResult屬性來實現返回特定的DialogResult。
this.buttonOK.DialogResult=System.Windows.Forms.DialogResult.OK;
this.buttonCancel.DialogResult=System.Windows.Forms.DialogResult.Cancel;
注冊確定按鈕事件,
//注冊確定按鈕事件
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//確定按鈕處理程序
private void buttonOK_Click(object sender, EventArgs e)
{
if (this.textBoxPath.Text.Trim().Length == 0)
{
MessageBox.Show(輸入的路徑信息不對!);
this.textBoxPath.Focus();
//設置文本框焦點
this.DialogResult = DialogResult.None;
}
}
可見,新的實現方式代碼減少了一半。
.Net Framework提供的模式窗體
.Net Framework為我們提供了一些比較常用的對話框,在開發過程中省了不少事,以下對其進行介紹。
MessageBox。顯示可包含文本、按鈕和符號(通知並指示用戶)的消息框。通過MessageBox.Show 靜態方法來打開模式對話框。
public static DialogResult Show ( string text );
該方法包含多個重載版本。復雜的一個方法如下,
public static DialogResult Show ( IWin32Window owner, string text,
string caption, MessageBoxButtons buttons, MessageBoxIcon icon,
MessageBoxDefaultButton defaultButton, MessageBoxOptions options,
string helpFilePath, HelpNavigator navigator, Object param ) ;
根據不同的參數可以定制對話框的行為。
另外一些對話框提供了特定功能。
OpenFileDialog。打開文件對話框,從FileDialog類繼承,提示用戶打開文件,無法繼承此類。對於文件的打開操作屬於比較常見的。
SaveFileDialog。保存文件對話框,從FileDialog類繼承,提示用戶選擇文件的保存位置。無法繼承此類。
FolderBrowserDialog。目錄浏覽對話框,從CommonDialog類繼承,提示用戶選擇文件夾。無法繼承此類。 FontDialog。字體設置對話框,從CommonDialog類繼承,提示用戶從本地計算機上安裝的字體中選擇一種字體。可繼承該類。
ColorDialog。顏色設置對話框,從CommonDialog類繼承,表示一個通用對話框,該對話框顯示可用的顏色以及允許用戶定義自定義顏色的控件。可繼承該類。
PageSetupDialog。打印頁面設置對話框,從CommonDialog類繼承,允許用戶更改與頁面相關的打印設置,包括邊距和紙張方向。無法繼承此類。
PrintDialog。打印對話框,從CommonDialog類繼承,允許用戶選擇一台打印機並選擇文檔中要打印的部分。無法繼承此類。
PrintPreviewDialog。打印預覽對話框,從Form類繼承,表示包含 PrintPrevIEwControl 的對話框窗體。可繼承該類。由於該類從Form類繼承,所以除了通過
PrintPrevIEwDialog.ShowDialog ();
PrintPrevIEwDialog.ShowDialog (IWin32Window);
方法以模式方式打開窗體外,還可以通過PrintPrevIEwDialog.Show ();
或其重載PrintPrevIEwDialog.Show (IWin32Window);方法按正常非模式方式打開。
上面列舉的文件對話框抽象基類FileDialog是從CommonDialog抽象類繼承,因此所有從該類繼承的對話框都可以通過CommonDialog.ShowDialog ();或其重載CommonDialog.ShowDialog (IWin32Window);方法以模式方式打開窗體。