【问题标题】:How do I make the close button of a Windows Form not close the form but make it invisible?如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?
【发布时间】:2012-06-29 22:26:28
【问题描述】:

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

谁能告诉我如何让关闭按钮不关闭表单而是让它不可见?

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

【问题讨论】:

    标签: c# .net winforms button


    【解决方案1】:

    首先,您要处理主窗体的.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 设为成员变量,以便在显示/隐藏表单时继续隐藏/显示图标。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        实现您想要的最简单的方法是订阅 FormClosing 事件并通过包含此类代码将可见设置为 false:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-25
          • 1970-01-01
          相关资源
          最近更新 更多