3

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

有人能告诉我如何使关闭按钮不关闭表单而是使其不可见吗?

(或者如果有人可以想出更好的方法来通过各种方式实现相同的目标)

4

3 回答 3

9

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

然后,您使用 aNotifyIcon将图标添加到系统托盘。

最后,通过调用隐藏表单.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一个成员变量,以便您可以在显示/隐藏表单时继续隐藏/显示图标。

于 2012-06-29T22:31:06.350 回答
4

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

于 2012-06-29T22:31:13.933 回答
3

实现您想要的最简单的方法是订阅 FormClosing 事件并设置 visible false,通过包含这种代码:

FormClosing += (sender, args) => { args.Cancel = true; Visible = false; };
于 2012-06-29T22:30:11.280 回答