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

时间:2012-06-29 22:26:29

标签: c# .net winforms button

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

有人可以告诉我如何使关闭按钮不关闭表单但让它不可见吗?

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

3 个答案:

答案 0 :(得分: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设为成员变量,以便在显示/隐藏表单时继续隐藏/显示图标。

答案 1 :(得分:4)

您可以尝试将其设为托盘图标应用。这里有一个很好的教程:http://www.developer.com/net/net/article.php/3336751/C-Tip-Placing-Your-C-Application-in-the-System-Tray.htm

答案 2 :(得分:3)

实现所需内容的最简单方法是订阅FormClosing事件并通过包含此类代码设置可见的false:

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