这里有两个问题,希望这样可以。
首先,主要是,我试图在用户退出我的应用程序时提示他们,不管他们是否真的想退出。我的代码如下:
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(您是缺少使用指令还是程序集引用?)。
然而,当我使用DialogResult时,它工作得很好。为什么会这样呢?
我的第二个问题是关于这段代码:
case DialogResult.No:
break;如果有人按了对话框上的Cancel按钮,除了休息之外,是否应该在里面放任何东西呢?或者没有它一切都会正常吗?
发布于 2012-02-10 17:08:05
DialogResult是给WinForms的。MessageBoxResult是给SilverLight的。
只使用break语句就可以处理No的情况。但是在这里使用开关语句太过分了。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,可以取消窗体的闭包。不做任何操作,就可以关闭窗体。
发布于 2012-02-10 17:04:15
正如您所看到的,名称空间是不同的:System.Windows.Forms (Winforms)与System.Windows (WPF)。
https://stackoverflow.com/questions/9231556
复制相似问题