2013-01-15 86 views
-1

我的確認消息有問題 我有兩個MessageBox,第一個問「你想退出嗎?」 第二個,問「你確定!?」 我的問題是,如果我選擇是,當第一個MessageBox「你想退出?」顯示,第二個消息框仍然會出現..兩個MessageBox退出確認消息

namespace WindowsFormsApplication5 
{ 
    public partial class Form1 : Form 
    { 

     private void Form1_FormClosing(Object sender, FormClosingEventArgs e) 
     { 
      var confirmationBox = MessageBox.Show(@"Do you want to quit", @"Title", 
                MessageBoxButtons.YesNo); 
      var confirmationBox2 = MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo); 


      if (confirmationBox == DialogResult.Yes) 
      { 
       if (confirmationBox2 == DialogResult.No) 
       { 
        e.Cancel = true; 
       } 
      } 

     } 

    } 
} 
+1

無關你的問題,但只是讓你知道,這是不常見的做法是把'@'s字符串文字之前,除非有一個理由(例如字符串包含反斜槓或換行符)。 – JLRishe

+0

@JLRishe感謝您提供這些信息。 – Ydhem

+1

這是你編碼的方式,當然它會顯示出來..查看你的代碼..也調試我試過的代碼,它的工作方式應該是你可能需要將第二個代碼置於條件聲明 – MethodMan

回答

6

不顯示第二個消息框,直到您已檢查了第一的成績:

var confirmationBox = MessageBox.Show(@"Do you want to quit", @"Title", 
    MessageBoxButtons.YesNo); 

if (confirmationBox == DialogResult.Yes) 
{ 
    var confirmationBox2 = MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo); 
    if (confirmationBox2 == DialogResult.No) 
    { 
     e.Cancel = true; 
    } 
} 

附:用這樣的對話來討厭你的用戶很煩人;考慮不要這樣做,除非有一個真正令人信服的理由,即他們現在不應該關閉(即處於無效狀態或未保存數據的操作中)。

+1

更不用說大多數用戶甚至不會閱讀對話框。 – Troyen

+0

謝謝! ...(: – Ydhem

+0

@Servy:Lol ...打我到秒...... –

0

發生了什麼事是你正在顯示消息框,然後檢查每個響應。

你想要做的是在你的if語句中進行顯示並檢查響應。

if (MessageBox.Show(@"Do you want to quit", "Title", MessageBoxButtons.YesNo) == DialogResult.Yes) { 
    if (MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo) == DialogResult.No) { 
     e.Cancel = true; 
    } 
}