| 值 | 說明 | 典型觸發按鈕 |
|---|---|---|
| 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