【发布时间】:2015-09-15 07:58:04
【问题描述】:
在我的 WinForms 应用程序中发生了一些奇怪的事情(发生奇怪的事情通常是我的错)。
我有一个 FormClosing 事件,它将检查是否对尚未保存的表单进行了任何更改。
如果用户确认保存更改,我将调用保存按钮的单击事件。但是,即使我删除了 OnClick 事件中的所有逻辑,表单仍保持打开状态,我必须在它关闭之前再次关闭它。
如果我跳过buttonSave.PerformClick(); 行,那么表单会正确关闭。
为什么会进入点击事件,取消关闭?有什么解决办法吗?
private void MyForm_FormClosing(object sender, FormClosingEventArgs e)
{
//Check if there changes were made on the form
//Prompt user to save
if (confirmSave)
buttonSave.PerformClick();
}
private void buttonSave_Click(object sender, EventArgs e)
{
//Everything in here commented out.
}
【问题讨论】:
-
为什么不直接调用事件,而不是使用 PerformClick?
-
我建议您,将您的保存逻辑从事件方法中取出并创建一个新方法,然后可以从多个方法中调用该方法。
-
这和我说的一样:P
-
确实很奇怪,但是调用buttonSave_Click(sender, e);而不是 PerformClick 工作正常。欢迎您将其升级为答案,我会接受。