C# DialogResult上的应用程序关闭
我有一个C#GUI应用程序。当用户点击红色的“X”(用于关闭应用程序)时,我想显示一条消息并询问他是否真的想关闭它 我找到了一个解决方案:C# DialogResult上的应用程序关闭,c#,visual-studio,user-interface,messagebox,dialogresult,C#,Visual Studio,User Interface,Messagebox,Dialogresult,我有一个C#GUI应用程序。当用户点击红色的“X”(用于关闭应用程序)时,我想显示一条消息并询问他是否真的想关闭它 我找到了一个解决方案: DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "SomeTitle", MessageBoxButtons.YesNo); if (dialog == DialogResult.Yes) {
DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "SomeTitle", MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes)
{
Application.Exit();
}else if (dialog == DialogResult.No)
{
//don't do anything
}
当用户单击“是”时,应用程序应完全终止。(Application.Exit()是否正确用于此目的?)
当用户单击“否”时,对话框Result/MessageBox应关闭,但应用程序应保持打开状态。然而,它关闭了
我怎样才能避免这种情况
顺便说一句:我使用Visual Studio 2010和Winforms。使用程序窗口的窗体关闭事件。如果用户单击“否”,则可以将
e.Cancel
设置为true
:
我猜您正在使用FormClosed
。你是吗?那就太晚了。试试这个
this.FormClosing += new FormClosingEventHandler(delegate(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Do you really want to exit this application?", MessageBoxButtons:=MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
});
使用表单中的FormClosing事件和取消流程 例如:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = dialog = MessageBox.Show("Do you really want to close the program?", "SomeTitle", MessageBoxButtons.YesNo);
if (dialog == DialogResult.No)
{
e.Cancel = true;
}
}
参考Mudu的答案 基本上,除非您为
MessageBox.Show()
指定其他参数,否则无法从默认的MessageBox
中获得除DialogResult.Ok
之外的任何结果
您发布的代码(减去您的小错误dialog=dialog=
)完全符合我的预期
另外:
Application.Exit()
是关闭应用程序的正确方法:)不要这样做;这真的很烦人。我一直希望在这样一个对话框上有一个“是的,该死!”的按钮,这样它就再也不会问我这样的傻事了,但我还没见过。将this.DialogResult属性设置回None以防止其关闭。很抱歉,这没有多大帮助。这是实现这一目标的必要条件,因此我提出这一问题;)好的,我希望有3个几乎相同的回答:(.e是FormClosingEventArgs.e.cancel意味着取消formclosing,因此它将重新打开。我将此代码用于我的第一个表单。它工作正常。我在该应用程序中再次将此代码用于我的第二个表单。但它工作不正常。两次出现确认框退出应用程序。为什么?很好。FormClo在事件列表中的FormClosing之后调用sed。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = dialog = MessageBox.Show("Do you really want to close the program?", "SomeTitle", MessageBoxButtons.YesNo);
if (dialog == DialogResult.No)
{
e.Cancel = true;
}
}