我想要在单击右上角的“x”时最小化的WinForm。 为实现这一目标,我有:
private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
WindowState = FormWindowState.Minimized;
}
这一切都很好,但现在我有一个上下文菜单,可以选择关闭WinForm,但由于上面的代码,它只是最小化窗口。
我怎样才能让一切按照我想要的方式运作?
答案 0 :(得分:10)
让click事件处理程序设置bool
事件处理程序中使用的FormClosing
标志。
剥离代码示例:
public class YourForm : Form
{
private bool _reallyClose;
private void ContextMenuClick(object sender, EventArgs e)
{
_reallyClose = true;
this.Close();
}
private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
if (!_reallyClose)
{
e.Cancel = true;
WindowState = FormWindowState.Minimized;
}
}
}
答案 1 :(得分:0)
单击“关闭”菜单时需要设置标记。
然后,您可以在FormClosing
中检查标记并且不执行任何操作。
答案 2 :(得分:0)
X和系统上下文菜单都发送相同的Windows消息,不认为您可以轻松分离操作。这也是Alt + F4消息。
我还说我不喜欢这种非标准行为,如果我点击X我希望它关闭,而不是最小化,那就是左边的按钮2用于什么。
也许最好的方法是拥有你想要的外观和感觉不是显示默认的X按钮 - 关闭默认功能,而是用自己的事件绘制自己的。 这可能会使系统上下文菜单混乱,因此您不再拥有关闭选项。
答案 3 :(得分:0)
您可以检查发件人是否是上下文菜单并采取相应的行动吗?