gpt4 book ai didi

c# - MessageBoxResult 与 DialogResult

转载 作者:太空狗 更新时间:2023-10-29 18:12:26 27 4
gpt4 key购买 nike

这里有两个问题,希望没问题。

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

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。我读了here pre-3.0 应该使用 DialogResult,但是如果我使用 3.5MessageBoxResult 不应该工作吗?

当我尝试调用它时,我得到了

The type or namespace name MessageBoxResult could not be found (are you missing a using directive or an assembly reference?).

但是,当我使用 DialogResult 时它工作正常。这是为什么?

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

case DialogResult.No:
break;

如果有人点击对话框中的Cancel 按钮,是否可以在其中放置除中断之外的任何内容?或者没有它一切都会正常运行吗?

最佳答案

DialogResult 适用于 WinForms。 MessageBoxResult 适用于 SilverLight。

只有 break 语句适用于 No 情况。但是在这里使用 switch 语句有点过分了。 if (response == yes) Close(); 就足够了。

但是请注意,这不是执行您想要的操作的理想方式。如果用户单击窗口边框上的关闭按钮,或按下 ALT+F4 会怎样?相反,您应该处理 FormClosing 事件:

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,您可以取消关闭表单。什么都不做,您允许表单关闭。

关于c# - MessageBoxResult 与 DialogResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com