C#最小化到托盘

时间:2013-03-11 11:12:34

标签: c# minimize trayicon

我知道你会想到“不再是这个问题”,因为当我搜索它时,我发现了一百个结果。但是当我按照这里的页面所描述的那样输入代码时,它只是最小化到开始菜单的正上方。

这是我使用的代码(我添加了一个消息框来查看代码是否被触发,但消息框永远不会弹出):

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

因为我不知道它是否链接到Form1Form,所以我已尝试过两者,但无济于事。

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

现在,当您双击Form时,它会将此行放在Form1.Designer.cs中:

this.Load += new System.EventHandler(this.Form1_Load);

我是否需要类似的行来触发最小化事件?

如你所见,我完全迷失了:)

哦,并没有最小化到任务栏,因为我使用以下代码隐藏运行中的表单:

protected override void OnLoad(EventArgs e)
{
    Visible = false; // Hide form window.
    ShowInTaskbar = false; // Remove from taskbar.
    base.OnLoad(e);
}

3 个答案:

答案 0 :(得分:1)

您需要活动

private void Form1_Resize(object sender, EventArgs e)
{

}

Creating Event Handlers on the Windows Forms Designer

答案 1 :(得分:1)

  1. 在表单中添加NotifyIcon组件。确保通过属性窗格设置图标,否则它将不可见。
  2. 为表单的Control.SizeChanged事件创建一个事件处理程序。在该事件处理程序中放置以下代码:
  3. 示例代码:

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

    然后,为了使表单再次显示NotifyIcon.MouseDoubleClick事件处理程序,您可以放置​​以下代码:

    private void trayIcon_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        WindowState = FormWindowState.Normal;
        ShowInTaskbar = true;
    }
    

答案 2 :(得分:0)

您需要了解的基本事项是事件。当您的表单(或任何控件)发生某些事情时会触发事件。例如,在调整表单大小,加载或单击表单时,会引发事件。您可以挂钩此事件以在事件发生时执行您自己的代码。

在您的情况下,您希望在调整表单大小的事件上执行代码以最小化表单。因此,您需要将方法挂钩到resize事件。您的方法名称不相关,所以让我们使用更好的名称:

private void HideWhenMinimized(object sender, EventArgs e)
{
    MessageBox.Show("Works1");
    if (WindowState == FormWindowState.Minimized)
    {
        this.Hide();
    }
}

要将HideWhenMinimized方法挂钩到表单的Resize事件中,您必须这样做:

this.Resize += new System.EventHandler(this.HideWhenMinimized);

如果在表单的构造函数或Load事件中添加该行代码,则在调整表单大小后立即调用代码。