我需要一些比ShowDialog獲得的傳統OK或Cancel狀態更多的信息,也就是我的自定義對話框窗體上的文本框中的一些字符串。自定義ShowDialog與DialogResult相比具有更多信息
我想知道這是什麼邏輯。我想這樣稱呼它:
CustomDialog d = new CustomDialog();
DoStuffWith(d.ShowDialog().CustomString);
當然,必須有返回結果的自定義類。讓我們這樣定義它:
class CustomDialogResult
{
public string CustomString { get; private set; }
public CustomDialogResult(string customString)
{
this.CustomString = customString;
}
}
然後,我們需要在我們的CustomDialog:Form中重新使用ShowDialog方法。我猜想我們可以從表單的一些父顯示開始。此外,將一個事件處理程序添加到確定按鈕,這將設置結果。
public CustomDialogResult CustomDialogResult { get; private set; }
private void buttonOK_Click(object sender, EventArgs e)
{
this.Result = new CustomDialogResult(this.TextBoxCustom.Text);
this.Close();
}
public CustomDialogResult ShowCustomDialog()
{
this.Show(Form.ActiveForm);
}
正如你所看到的,問題在於等待OK按鈕被點擊,然後返回this.Result。我可以使用Thread.Sleep(0)或ManualResetEvent,但會阻止對話框窗體上的輸入。我將如何去做這件事?我知道我可以使用醜陋的語法,但是如果ShowDialog很好地完成它,我們必須有辦法。 :)
D'哦!太簡單。現在肯定會這樣做。謝謝。 – Lazlo 2011-04-25 03:13:06