【问题标题】:C# Minimize to TrayC# 最小化到托盘
【发布时间】:2013-03-11 11:12:34
【问题描述】:

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

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

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

因为不知道是链接到Form1还是Form,我都试过了,没用。

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# minimize trayicon


    【解决方案1】:

    你需要这个活动

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

    Creating Event Handlers on the Windows Forms Designer

    【讨论】:

    • 谢谢你们,完成了工作:) 我使用了你们的两个答案,但我只能归功于一个人。我感谢 Andy,因为创建事件句柄的链接,但是 ByteBlast,我也要感谢你,因为你的建议很有帮助!
    【解决方案2】:
    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;
    }
    

    【讨论】:

      【解决方案3】:

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

      在您的情况下,您希望在调整表单大小时执行代码以最小化表单。因此,您需要将您的方法与 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 事件中添加该行代码,那么只要调整表单大小,您的代码就会被调用。

      【讨论】:

        猜你喜欢
        • 2010-10-19
        • 2013-04-14
        • 1970-01-01
        • 2012-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        • 1970-01-01
        相关资源
        最近更新 更多