我的WinForm
上有一个保存按钮,用于保存表单信息,然后使用this.Close()
语句关闭表单。
然而,有另一种关闭表单的方法,那就是X
按钮。
我正在使用FormClosing
事件在表单关闭之前提出问题。
private void EmailNewsletter_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MsgBox.Show("Are you sure you want to dimiss this newsletter?", "Dismiss Newsletter", MsgBox.Buttons.YesNo, MsgBox.Icon.Question);
if (dr == System.Windows.Forms.DialogResult.Yes)
{
this.Newsletter = null;
}
else
{
e.Cancel = true;
}
}
但处理关闭表单的方式取决于表单的关闭方式。如果用户点击保存按钮,表单应该没有问题就会关闭。只有当用户点击X
按钮时,才会询问问题。
如何让我的表单知道 Close 命令的来源?
答案 0 :(得分:1)
一个简单的布尔标志应该可以解决这个问题:
private bool saveClicked = false;
private void btnSave_click(object sender, EventArgs e)
{
saveClicked = true;
}
private void EmailNewsletter_FormClosing(object sender, FormClosingEventArgs e)
{
if(saveClicked)
return;
DialogResult dr = MsgBox.Show("Are you sure you want to dimiss this newsletter?", "Dismiss Newsletter", MsgBox.Buttons.YesNo, MsgBox.Icon.Question);
if (dr == System.Windows.Forms.DialogResult.Yes)
{
this.Newsletter = null;
}
else
{
e.Cancel = true;
}
}