2015-03-25 76 views
-4

我確信這可能被多次詢問,但我找不到它。我有一些代碼根據問題的兩個結果打開messagebox,正確或錯誤。目前,在消息框上單擊確定返回到帶有問題的表單。我想要的是發生兩種行爲之一,我只是不知道從哪裏開始實現。C#如何在MessageBox上設置表單關閉事件

如果正確,當messagebox關閉時,我想要刷新問題。如果錯誤,我希望消息框關閉,執行操作(循環),並允許再次嘗試。

我無法找到一個事件來控制messagebox窗體關閉。

任何人都可以分享一些建議嗎?謝謝你的時間。

double userAnswer = double.Parse(txtResult.Text); if (Question.CheckIfRight(userAnswer)) MessageBox.Show("Right!!"); else MessageBox.Show("Wrong"); 
+1

郵政編碼,很可能你會很快得到答案。 – Steve 2015-03-25 00:25:08

+0

它似乎是你想創建一個自定義消息框窗口與一個簡單的委託(如行動)被調用時關閉.... – ymz 2015-03-25 00:26:26

+0

哦...你不需要那個事件,你只需要問題.CheckIfRight布爾值,如果爲true,則更改問題,否則不要更改 – User2012384 2015-03-25 01:05:17

回答

0

MessageBox.Show(...)返回從DialogResult枚舉值之一。你可以用它來檢查用戶點擊了哪一個選項。

所以代碼如下所示:

double userAnswer = double.Parse(txtResult.Text); 
DialogResult dr; 

if (Question.CheckIfRight(userAnswer)) 
{ 
    dr = MessageBox.Show("Right"); 
} 
else 
{ 
    dr = MessageBox.Show("Wrong"); 
} 

if(dr == DialogResult.OK) 
{ 
    // Your "action" goes here 
} 

這樣,你可以檢查時MessageBox被關閉,哪些按鈕用戶點擊將其關閉。基於此,您可以按自己想要的方式繼續執行程序。

1

在我看來,你的問題更多的是關於程序流程。

private void submitButton_Click(object sender, EventArgs e) 
{ 
    var userAnswer = double.Parse(txtResult.Text); 

    if (!Question.CheckIfRight(userAnswer)) 
    { 
     MessageBox.Show("Wrong"); 
     return; 
    } 

    MessageBox.Show("Right!!"); 
    RefreshQuestion(); 
} 

更新:

記住MessageBox.Show("Right!!")將阻止調用代碼,並等待用戶點擊OK按鈕將恢復到以前RefreshQuestion();,所以你不應該需要追求任何事件當它關閉時。