程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#模式窗體詳解(3)

C#模式窗體詳解(3)

編輯:關於C語言

談到模式窗體的關閉,先來看一下模式窗體關閉後的返回值。無論是調用Form.ShowDialog ()方法還是Form.ShowDialog (IWin32Window)方法,都會在模式窗體關閉時返回System.Windows.Forms.DialogResult枚舉值。參考 MSDN,該枚舉包含的值如下,

DialogResult.Abort,對話框的返回值是 Abort(通常從標簽為“中止”的按鈕發送)。

DialogResult.Cancel,對話框的返回值是 Cancel(通常從標簽為“取消”的按鈕發送)。

DialogResult.Ignore,對話框的返回值是 Ignore(通常從標簽為“忽略”的按鈕發送)。

DialogResult.No,對話框的返回值是 No(通常從標簽為“否”的按鈕發送)。

DialogResult.None,從對話框返回了 Nothing。這表明有模式對話框繼續運行。

DialogResult.OK,對話框的返回值是 OK(通常從標簽為“確定”的按鈕發送)。

DialogResult.Retry,對話框的返回值是 Retry(通常從標簽為“重試”的按鈕發送)。

DialogResult.Yes,對話框的返回值是 Yes(通常從標簽為“是”的按鈕發送)。

由於某些原因在實際用戶操作中比如選項數據無法保存,輸入的設置數據有問題,點擊[確定]按鈕需要阻止窗體的關閉以

對輸入的設置進行調整。對於一些開發者在技術社區貼的阻止模式窗體關閉的代碼,我認為不是很好的實現。以下用代碼來描述該實現,注意其中用到了三個事件。

//注冊窗體關閉事件
this.FormClosing += new
System.Windows.Forms.FormClosingEventHandler(this.OptionForm_FormClosing);
//注冊確定按鈕事件
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//注冊取消按鈕事件
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
三個事件對應的事件處理程序如下,
//確定按鈕處理程序
private void buttonOK_Click(object sender, EventArgs e)
{
  //假設textBoxPath用來記錄目錄路徑,如果不存在要求用戶重新設置。
 if (this.textBoxPath.Text.Trim().Length == 0)
 {
   MessageBox.Show(輸入路徑信息不對!);
   this.textBoxPath.Focus();
 }
 else
 {
   this.DialogResult = DialogResult.OK;
 }
}
//取消按鈕處理程序
private void buttonCancel_Click(object sender, EventArgs e)
{
 this.DialogResult = DialogResult.Cancel;
}
//窗體關閉處理程序,在關閉窗體時發生。
private void OptionForm_FormClosing(object sender, FormClosingEventArgs e)
{
 if (this.DialogResult != DialogResult.Cancel && this.DialogResult !=
DialogResult.OK)
   e.Cancel = true;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved