我的WinForm应用程序中有多个表单。
第一个表单(Form1)用于身份验证,而第二个表单(Main)用作打开其他表单的应用程序的主仪表板。
当我处于设计师模式时,我双击主窗体中的关闭按钮以生成关闭事件,但会发生奇怪的事情。
而不是:
private void Main_FormClosing(object sender, FormClosingEventArgs e)
点击生成的事件是:
private void Main_Load(object sender, EventArgs e)
我不明白为什么。
我尝试手动输入方法,如下所示:
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you really want to quit?", "Exit", MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes)
{
Application.Exit();
} else if (dialog == DialogResult.No)
{
e.Cancel = true;
}
}
但它根本没有关闭关闭按钮。
任何想法为什么?
答案 0 :(得分:0)
您需要查找并删除主窗体Close buttton的click事件的事件分配。该代码将位于 Main.Designer.cs 模块中。查找此代码的所有实例:
this.FormClosing += ...
删除该分配(或那些分配,如果有多个分配),然后返回到表单设计器,双击主窗体的关闭按钮,Visual Studio将创建并转到FormClosing事件的方法处理程序
答案 1 :(得分:0)
在Main()
的表单构造函数中,您可以像这样绑定FormClosing
事件的事件处理程序。
public Main()
{
// other startup tasks here
this.FormClosing += Main_FormClosing;
}
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
var dialogResult = MessageBox.Show("Do you really want to quit?", "Exit", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.No)
{
e.Cancel = true;
return;
}
Application.Exit();
}