将表单最小化到系统托盘

时间:2011-09-23 10:55:46

标签: c# forms notifyicon

我希望隐藏我的表单,同时保持我的应用程序在后台运行。 我使用过notifyIcon,它始终可见。

我用过“this.Hide();”隐藏我的表单但不幸的是我的应用程序接近(也不例外)。

我也在使用线程,这个表单在第二个线程上。

请告诉我如何解决。

2 个答案:

答案 0 :(得分:1)

为表单调整大小添加以下事件处理程序并通知图标单击事件

 private void Form_Resize(object sender, EventArgs e)
 {
    if (WindowState == FormWindowState.Minimized)
    {
        this.Hide();
    }
 }
 private void notifyIcon_Click(object sender, EventArgs e)
 {
    this.Show();
    this.WindowState = FormWindowState.Normal;
}

但这不是你的申请

答案 1 :(得分:1)

  

我也在使用线程,这个表单在第二个线程上。

我的水晶球说你已经使用ShowDialog()来显示表格。是的,在模态对话框上调用Hide()将关闭它。必然如此,模态对话框通常会禁用应用程序中的所有窗口。如果你隐藏它,那么用户无法返回程序,没有窗口可以激活。这个表单在另一个线程上运行,否则不会影响行为。

您需要调用Application.Run(new SomeForm())来避免这种情况。现在它不是模态的,你可以毫无困难地隐藏它。但实际上,避免在非UI线程上显示表单。没有理由,你的主要线程已经非常强大。