Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 最小化windows窗体到系统托盘_C#_.net_Winforms - Fatal编程技术网

C# 最小化windows窗体到系统托盘

C# 最小化windows窗体到系统托盘,c#,.net,winforms,C#,.net,Winforms,下面是我的失败代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) {

下面是我的失败代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        if (WindowState == FormWindowState.Minimized)
        {                                                                                      
            Hide();
        }
    }

    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        Show();
        WindowState = FormWindowState.Normal;
    }

}
当我单击“最小化”时,它仍然显示在我的任务栏上。你们知道怎么回事吗?

使用属性从任务栏中删除表单:

private void MainForm_Resize(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)        
        ShowInTaskbar = false;        
}

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    ShowInTaskbar = true;
    WindowState = FormWindowState.Normal;
}
感谢:


注意,我更改了调用base.WndProc和处理消息的顺序。否则,第一次单击时将取消最小化。

我已经发现了问题所在。我的Form1.Designer.cs文件中缺少事件处理程序声明。 我已经在Form1下添加了以下内容,它可以正常工作:

this.Resize += new System.EventHandler(this.Form1_Resize);
请试一试

this.ShowInTaskbar=false

在show()中


this.ShowInTaskbar=true

我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。避免编写使类侦听其自身事件的代码。事件用于告诉其他类中的其他代码表单发生了什么。相反,您永远不会忘记以这种方式订阅事件。这肯定是你忘了做的。我正在Windows 7中使用Microsoft Visual Studio 2008。这和我的问题有什么关系吗?我曾试图在MainForm_Resize中设置一个断点,但没有停止。似乎它没有进入MainForm_Resize事件。@Coolguy在最小化表单或恢复其状态时,不需要手动
隐藏
显示
表单。已在Windows 7的.NET 4.5上验证
this.Resize += new System.EventHandler(this.Form1_Resize);