首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# WinForms 模式對話框完整解析(三)

     編輯:關於C語言

DialogResult 列舉值完整對照

值說明典型觸發按鈕
Abort中止「中止」按鈕
Cancel取消「取消」按鈕
Ignore忽略「忽略」按鈕
No否「否」按鈕
None無返回值(對話框繼續執行)-
OK確定「確定」按鈕
Retry重試「重試」按鈕
Yes是「是」按鈕

阻止對話框關閉的正確模式

當驗證失敗需阻止關閉時,設置 this.DialogResult = DialogResult.None:


// 註冊三個事件
this.FormClosing += OptionForm_FormClosing;
this.buttonOK.Click += buttonOK_Click;
this.buttonCancel.Click += buttonCancel_Click;

// 確定按鈕:驗證通過才設 OK,否則設 None
private void buttonOK_Click(object sender, EventArgs e)
{
    if (string.IsNullOrWhiteSpace(textBoxPath.Text))
    {
        MessageBox.Show("輸入路徑資訊不正確!");
        textBoxPath.Focus();
        this.DialogResult = DialogResult.None; // 關鍵:阻止關閉
    }
    else
        this.DialogResult = DialogResult.OK;
}

// 取消按鈕
private void buttonCancel_Click(object sender, EventArgs e)
    => this.DialogResult = DialogResult.Cancel;

// FormClosing:非 OK/Cancel 時取消關閉
private void OptionForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.DialogResult != DialogResult.Cancel && this.DialogResult != DialogResult.OK)
        e.Cancel = true;
}

關鍵點

  • DialogResult.None 讓對話框繼續運行
  • FormClosing 事件中檢查結果決定 e.Cancel
  • 此模式適用於「驗證失敗不允許關閉」的業務需求
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved