这里有两个问题,希望可以.
首先,主要是,我试图在用户退出我的应用程序时提示他们是否真的要退出.我的代码如下:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
根据MSDN,我应该使用MessageBoxResult mBoxResult 而不是DialogResult mBoxResult.
我在用.NET Framework 3.5.我读到这里是pre-3.0应该使用DialogResult,但如果我用3.5,不应该MessageBoxResult工作?
当我试着打电话时,我明白了
MessageBoxResult找不到类型或命名空间名称(您是否缺少using指令或程序集引用?).
但是,当我使用DialogResult时,它工作正常.为什么是这样?
我的第二个问题是关于这段代码:
case DialogResult.No:
break;
Run Code Online (Sandbox Code Playgroud)
如果有人Cancel按下对话框上的按钮,除了休息之外放置任何东西是否合适?或者没有它,一切都会好起来吗?
Igb*_*man 11
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;
}
Run Code Online (Sandbox Code Playgroud)
通过设置e.Cancel到true,你取消窗体关闭.无所事事,您允许表单关闭.
如您所见,名称空间是不同的:( System.Windows.FormsWinforms)vs System.Windows(WPF).
| 归档时间: |
|
| 查看次数: |
8849 次 |
| 最近记录: |