首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MessageBoxResult对DialogResult

MessageBoxResult对DialogResult
EN

Stack Overflow用户
提问于 2012-02-10 16:54:19
回答 2查看 9.8K关注 0票数 8

这里有两个问题,希望这样可以。

首先,主要是,我试图在用户退出我的应用程序时提示他们,不管他们是否真的想退出。我的代码如下:

代码语言:javascript
复制
private void exitToolStrip_Click(object sender, EventArgs e)
{
    DialogResult mBoxResult = MessageBox.Show("Would you like to exit the program?", "Exit Program", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    switch (mBoxResult)
    {
        case DialogResult.Yes:
            this.Close();
            break;
        case DialogResult.No:
            break;
    }
}

根据MSDN,我应该使用MessageBoxResult mBoxResult而不是DialogResult mBoxResult

我正在使用.NET Framework 3.5。我读过这里pre-3.0应该使用DialogResult,但是如果我使用3.5MessageBoxResult不应该工作吗?

当我试着叫它的时候,我得到

无法找到类型或命名空间名称MessageBoxResult (您是缺少使用指令还是程序集引用?)。

然而,当我使用DialogResult时,它工作得很好。为什么会这样呢?

我的第二个问题是关于这段代码:

代码语言:javascript
复制
case DialogResult.No:
break;

如果有人按了对话框上的Cancel按钮,除了休息之外,是否应该在里面放任何东西呢?或者没有它一切都会正常吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-10 17:08:05

DialogResult是给WinForms的。MessageBoxResult是给SilverLight的。

只使用break语句就可以处理No的情况。但是在这里使用开关语句太过分了。if (response == yes) Close();就够了。

然而,请注意,这并不是一个理想的方式来做你想做的事。如果用户单击窗口边框上的“关闭”按钮或按ALT+F4怎么办?相反,您应该处理FormClosing事件:

代码语言:javascript
复制
private void MyForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (MessageBox.Show("Would you like to exit the program?", "Exit Program", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
        e.Cancel = true;
}

通过将e.Cancel设置为true,可以取消窗体的闭包。不做任何操作,就可以关闭窗体。

票数 11
EN

Stack Overflow用户

发布于 2012-02-10 17:04:15

  • 如果应用程序是DialogResult应用程序,则使用WinForms
  • 如果您的应用程序是WPF/Silverlight应用程序,请使用MessageBoxResult

正如您所看到的,名称空间是不同的:System.Windows.Forms (Winforms)与System.Windows (WPF)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9231556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档