[英]MessageBoxResult vs. DialogResult
这里有两个问题,希望可以。
首先,主要是,我试图在用户退出我的应用程序时提示他们是否真的要退出。 我的代码如下:
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.5
,那么MessageBoxResult
不应该工作吗?
当我试着打电话时,我明白了
找不到类型或命名空间名称
MessageBoxResult
(您是否缺少using指令或程序集引用?)。
但是,当我使用DialogResult时,它工作正常。 为什么是这样?
我的第二个问题是关于这段代码:
case DialogResult.No:
break;
如果有人点击对话框上的“ Cancel
按钮,那么在休息之外放置任何东西是否合适? 或者没有它,一切都会好起来吗?
DialogResult适用于WinForms。 MessageBoxResult适用于SilverLight。
只有break
声明适用于No
case。 但是在这里使用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
,可以取消表单的关闭。 无所事事,您允许表单关闭。
如您所见,名称空间是不同的: System.Windows.Forms
(Winforms)与System.Windows
(WPF)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.