2012-06-29 60 views
3

此表单有一个NotifyIcon对象。当用户点击“关闭”按钮时,我希望表单不会关闭,但会变得不可见。然后,如果用户想要再次查看表单,则可以双击系统托盘中的图标。如果用户想要关闭表格,他可以右击图标并选择“关闭”。如何使Windows窗体的关闭按钮不会关闭窗体,而是使其不可见?

有人能告诉我如何使关闭按钮不关闭窗体,但使其不可见?

(或者,如果有人能想到更好的办法,以实现通过各种手段在同一目标)

回答

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

3

最简单的方式来实现你想要什么是订阅的FormClosing事件,并设置明显的假,由包括这种代码:

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