如何使Windows窗体的关闭按钮不关闭窗体,而是使其变为不可见?

3
这个表单有一个NotifyIcon对象。当用户点击关闭按钮时,我想让表单不关闭而是变得不可见。然后,如果用户想再次看到表单,可以在系统托盘中双击图标。如果用户想关闭表单,可以右键单击图标并选择“关闭”。
请问有人能告诉我如何使关闭按钮不关闭表单而是使其不可见吗?
(或者如果有更好的方法来实现相同的目标,请随便提出)
3个回答

9
首先,您需要处理主窗体的 .FormClosing 事件(或通过重写OnFormClosing方法)。通过将e.Cancel设置为true来取消关闭操作。
然后,您可以使用NotifyIcon 将图标添加到系统托盘中。
最后,通过调用.Hide()隐藏窗体。
protected override void OnFormClosing(FormClosingEventArgs e) {
    if (IActuallyWantToCloseFlag)
        return;

    var ni = new NotifyIcon(this.components)
    {
        Icon = someIcon,
        Text = "My text",
        Visible = true
    };
    ni.DoubleClick += (sender, args) => { this.Show(); };

    this.Hide();
    e.Cancel = true;
}

这应该可以帮助你入门。你可能希望将ni设置为成员变量,这样你就可以在显示/隐藏表单时继续隐藏/显示图标。


4

3

要实现您想要的最简单的方法是订阅FormClosing事件并设置visible为false,代码示例:

FormClosing += (sender, args) => { args.Cancel = true; Visible = false; };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接