【问题标题】:Message box with “Yes”, “No” choices in C#?C# 中带有“是”、“否”选项的消息框?
【发布时间】:2016-08-22 20:00:44
【问题描述】:

我想进行 MessageBox 确认。这是消息框:

DialogResult dialog = MessageBox.Show("Etes vous sûre de vouloir fermer le programme ?", "Exit",MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes)
{
  Application.Exit();
}
else if (dialog == DialogResult.No)
{
    e.Cancel = true;
}

问题是,当我单击“是”按钮时,弹出窗口不会自动关闭。再次点击 2 次后会关闭。 它应该从第一次关闭。

看起来很简单,但我不确定我的错误在哪里;

【问题讨论】:

  • 从该代码中,没有明显的原因 - 但是取决于该代码的位置,这可能是原因..在错误的位置可能导致事件被触发多次

标签: c# winforms dialogresult


【解决方案1】:

如果它是主窗体关闭方法,你可以这样使用它:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (MessageBox.Show("Really close?", "Exit", MessageBoxButtons.YesNo) ==
        System.Windows.Forms.DialogResult.No)
        e.Cancel = true;
}

如果用户按“是”,您的表单将因为没有关闭取消而关闭。 如果不是主窗体关闭并不意味着应用程序退出。在这种情况下,您可以在 ShowDialog 调用之后显式关闭父表单。

【讨论】:

    【解决方案2】:

    以下是提示信息的代码(是/否):

    DialogResult dialogResult = MessageBox.Show("Are you sure to delete Yes/No", "Delete", MessageBoxButtons.YesNo);
    
    if (dialogResult == DialogResult.Yes)
    {
       /// do something here        
    }
    

    【讨论】:

      【解决方案3】:

      Application.Exit() 之前致电Application.DoEvents()。但最好用Close() 关闭父窗体而不是Application.Exit。

      【讨论】:

        【解决方案4】:
        switch (MessageBox.Show("Etes vous sûre de vouloir fermer le programme ?", "Your_Application_Name", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                {
                    case DialogResult.Yes:
                        Application.Exit();
                        break;
                    case DialogResult.No:
                        //Action if No
                        break;
        
                }
        

        【讨论】:

        • 请解释NoCancel的区别。
        • 为什么要解决问题?您只需将if 重构为switch。没有其他变化,还是我错过了什么?
        • 很抱歉,如果它没有回答您的问题。但这就是我使用它的方式,它对我有用..
        猜你喜欢
        • 2011-03-03
        • 2014-04-26
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-11
        • 1970-01-01
        相关资源
        最近更新 更多