c#最小化到托盘

本文关键字:最小化 | 更新日期: 2023-09-27 18:03:23

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

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

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);
}

c#最小化到托盘

你需要事件

private void Form1_Resize(object sender, EventArgs e)
{
}

在Windows窗体设计器上创建事件处理程序

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

示例代码:

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;
}

您需要了解的基本内容是事件。当窗体(或任何控件)发生某些事情时触发事件。例如,当窗体被调整大小、加载或单击时,将引发事件。当事件发生时,你可以挂接到这个事件来执行你自己的代码。

在您的情况下,您希望在窗体调整大小的情况下执行代码以最小化窗体。所以你需要将你的方法挂钩到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事件中添加了这行代码,那么您的代码将在表单调整大小时被调用。