如何使Windows窗体的关闭按钮不关闭窗体但使其不可见?

Joh*_*ith 3 .net c# button winforms

此表单具有NotifyIcon对象.当用户单击"关闭"按钮时,我希望表单不要关闭但是变得不可见.然后,如果用户想要再次看到该表单,他可以双击系统托盘中的图标.如果用户想要关闭表单,他可以右键单击该图标并选择"关闭".

有人能告诉我如何使关闭按钮不关闭表单但让它隐形吗?

(或者,如果有人能够想出一种更好的方法来实现同样的目标)

Jon*_*art 9

首先,您要处理主窗体的.FormClosing事件(或通过重写OnFormClosing方法).通过设置e.Cancel为true 取消.

然后,使用a 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;
}
Run Code Online (Sandbox Code Playgroud)

这应该让你开始.您可能想要创建ni一个成员变量,以便在显示/隐藏表单时可以继续隐藏/显示图标.