【问题标题】:How do I create a message box with "Yes", "No" choices and a DialogResult?如何创建带有“是”、“否”选项和 DialogResult 的消息框?
【发布时间】:2011-03-03 11:37:16
【问题描述】:

我想制作简单的是/否选择消息框,但我认为为此设计一个表单是无稽之谈。我想我可以使用 MessageBox、添加按钮等来完成此操作。很简单,但是既然没有返回DialogResult,那我该如何取回结果呢?

【问题讨论】:

    标签: c# winforms dialogresult


    【解决方案1】:

    试试这个:

    if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
    {
        Do something here for 'Yes'...
    }
    

    【讨论】:

      【解决方案2】:
      if (MessageBox.Show("Please confirm before proceed" + "\n" + "Do you want to Continue ?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
      
      {
      //do something if YES
      }
      
      else
      
      {
      //do something if NO
      }
      

      【讨论】:

        【解决方案3】:
        MessageBox.Show(title, text, messageboxbuttons.yes/no)
        

        这会返回一个您可以检查的 DialogResult。

        例如,

        if(MessageBox.Show("","",MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
           //do something
        }
        

        【讨论】:

          【解决方案4】:
          DialogResult dr = MessageBox.Show("Are you happy now?", 
                                "Mood Test", MessageBoxButtons.YesNo);
          switch(dr)
          {
             case DialogResult.Yes:
                break;
             case DialogResult.No:
                break;
          }
          

          MessageBox 类是你要找的。​​p>

          【讨论】:

            【解决方案5】:

            @Mikael Svenson 的回答是正确的。我只是想为它添加一个小补充:

            Messagebox 图标也可以包含一个附加属性,如下所示:

            DialogResult dialogResult = MessageBox.Show("Sure", "Please Confirm Your Action", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            

            【讨论】:

              【解决方案6】:

              用途:

              MessageBoxResult m = MessageBox.Show("The file will be saved here.", "File Save", MessageBoxButton.OKCancel);
              if(m == m.Yes)
              {
                  // Do something
              }
              else if (m == m.No)
              {
                  // Do something else
              }
              

              MessageBoxResult 在 Windows Phone 上使用而不是 DialogResult...

              【讨论】:

                【解决方案7】:

                这个简单的代码对我有用。我在这里从 MSDN 抓取它:

                https://social.msdn.microsoft.com/Forums/en-US/d1092a96-96b0-4ca4-b716-0c8e55e42ee9/how-can-i-manage-messagebox-result-?forum=Vsexpressvcs

                if (System.Windows.Forms.MessageBox.Show
                            ("Are you sure you want to add the audit?", "Add",
                            System.Windows.Forms.MessageBoxButtons.YesNo, 
                            System.Windows.Forms.MessageBoxIcon.Question)
                            ==System.Windows.Forms.DialogResult.Yes)                
                        // Do stuff after 'YES is clicked'
                        else
                        // DO stuff after 'NO is clicked'
                

                【讨论】:

                  【解决方案8】:
                  dynamic MsgResult = this.ShowMessageBox("Do you want to cancel all pending changes ?", "Cancel Changes", MessageBoxOption.YesNo);
                  
                  if (MsgResult == System.Windows.MessageBoxResult.Yes)
                  {
                      enter code here
                  }
                  else 
                  {
                      enter code here
                  }
                  

                  here查看更多详情

                  【讨论】:

                    【解决方案9】:

                    您还可以将此变体与文本字符串一起使用,这是完整的更改代码(来自 Mikael 的代码),在 C# 2012 中测试:

                    // Variable
                    string MessageBoxTitle = "Some Title";
                    string MessageBoxContent = "Sure";
                    
                    DialogResult dialogResult = MessageBox.Show(MessageBoxContent, MessageBoxTitle, MessageBoxButtons.YesNo);
                    if(dialogResult == DialogResult.Yes)
                    {
                        //do something
                    }
                    else if (dialogResult == DialogResult.No)
                    {
                        //do something else
                    }
                    

                    你可以之后

                    .YesNo
                    

                    插入消息图标

                    , MessageBoxIcon.Question
                    

                    【讨论】:

                      【解决方案10】:

                      应该这样做:

                      DialogResult dialogResult = MessageBox.Show("Sure", "Some Title", MessageBoxButtons.YesNo);
                      if(dialogResult == DialogResult.Yes)
                      {
                          //do something
                      }
                      else if (dialogResult == DialogResult.No)
                      {
                          //do something else
                      }
                      

                      【讨论】:

                      • 答案是针对 Windows,而不是我不太了解的 Windows Phone :)
                      • 'DialogResult' 在 wpf 中不起作用。您必须使用“MessageBoxResult”。
                      【解决方案11】:

                      MessageBox确实产生一个 DialogResults

                      DialogResult r = MessageBox.Show("Some question here");
                      

                      您还可以很容易地指定按钮。更多文档可以在http://msdn.microsoft.com/en-us/library/ba2a6d06.aspx找到。

                      【讨论】:

                        猜你喜欢
                        • 2016-08-22
                        • 2014-04-26
                        • 2012-03-09
                        • 2011-04-26
                        • 2011-08-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2012-02-08
                        • 1970-01-01
                        相关资源
                        最近更新 更多