这一定是个愚蠢的问题,但我无法弄清楚.我也不能使用设计器,因为在我之前的编码器设法将GUI和逻辑全部集中在一起,所以现在它很困惑.我必须按照旧学校的方式去做.
我有一个表格,可以通过3种方式关闭:关闭按钮,文件/关闭菜单和X图标.我希望他们都做同样的事情.拦截按钮和菜单事件很容易.事实上,两者都与一种onCloseConfig方法联系在一起.顺便问一下,这种方法有更好的名称吗?
private void onCloseConfig(object sender, System.EventArgs e)
{
if (! m_configControl.Modified)
{
Application.Exit(); // Or should it be this.Close();
}
....
// Else present a dialog, ask if they want to save.
}
Run Code Online (Sandbox Code Playgroud)
所以,拦截X我试过的:this.FormClosing +=new FormClosingEventHandler(this.onCloseConfig);我相信这是导致无限循环的原因.我不希望:) FormClosed是另一种选择,但似乎为时已晚.我只想拦截点击X的事实,而不是表格正在关闭的事实.
jk.*_*jk. 12
我认为你确实希望关闭表单,你可能缺少的是检查关闭的原因,只有来自用户才取消它,例如
private void my_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true; //I'm sorry Dave, I'm afraid I can't do that.
}
}
Run Code Online (Sandbox Code Playgroud)
隐藏'X'集Form.ControlBox = false,但这也将消除min/max.