我有一个WinForms应用程序,用于在用户点击取消按钮时检查未决更改。如果有待更改,我会提示用户看看他们是否确定要取消。如果他们这样做,我关闭表格。如果没有,我只是回来。但是,表单正在关闭。经过一些调试后,我意识到这是因为这个特定的按钮被设置为表单的CancelButton
,所以点击它会导致表单关闭。为了验证,我删除了CancelButton
属性,但行为依然存在。按钮正在自动关闭WindowsForm
我该如何防止这种自动关闭?这里是我的事件处理程序代码:
private void closeButton_Click(object sender, EventArgs e)
{
DialogResult dr = DialogResult.Yes;
if (changesMade)
{
dr = MessageBoxEx.Show(this, "Are you sure you wish to disregard the changes made?", "Changes Made", MessageBoxButtons.YesNo);
}
if (dr == DialogResult.Yes)
{
Close();
}
else
{
//TODO:
}
}
在上面的代码中,表单只能关闭,如果没有所做的更改,或者如果用户选择忽略他们。我做了更改,并点击了“否”到DialogBox,但表单仍然关闭。有和没有按钮设置为窗体的CancelButton。
我建议在'FormClosing'事件而不是'ButtonClick'中进行检查。然后,相应地设置“e.Cancel”。这样,不管关闭你的表单(无论文件 - >退出,右上角的X按钮等)都会提示未保存的更改。 – sab669
您是否正确调试,使用断点和F10?不良行为的原因应该很容易找到。 –
@TobiasKnauss是的,虽然我没有尝试采用这种方法以外的任何其他方法。 – AdamMc331