【问题标题】:Minimize to tray [duplicate]最小化到托盘[重复]
【发布时间】:2013-04-14 23:20:06
【问题描述】:

我的应用是用来聊天的,我想如果有人需要快速隐藏它,但又不想关闭它,我想出了这个:

private void button6_Click(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Minimized; 
}

但是,我不想去任务栏,而是希望它出现在托盘中(没有弹出窗口),只是应用程序图标,当有人点击它时,它需要设置它

this.WindowState = FormWindowState.Normal; 

这可能吗,如何?

系统托盘也是指右下角,时间旁边的那个

我仍然无法让它工作,如果我按照你们说的做,通知栏中不会出现任何内容(顺便说一句:这是要最小化的完整代码)

private void button6_Click(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Minimized;


}

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

为什么这不起作用?

【问题讨论】:

  • 没有“系统托盘”之类的东西。它被称为“通知区域”。这应该可以帮助您找到实现此功能的正确组件,NotifyIcon

标签: c#


【解决方案1】:

处理表单的 Resize 事件。在此处理程序中,您覆盖 Resize 事件的基本功能,使表单最小化为 系统托盘而不是任务栏。这可以通过执行 在表单的 Resize 事件处理程序中执行以下操作:

  1. 检查窗体的 WindowState 属性是否设置为 FormWindowState.Minimized。如果是,隐藏您的表单,启用 NotifyIcon 对象,并显示显示一些信息的气球提示。
  2. 一旦 WindowState 变为 FormWindowState.Normal,通过将 NotifyIcon 对象的 Visible 属性设置为 false 来禁用它。
  3. 现在,您希望在双击任务栏中的 NotifyIcon 对象时重新出现该窗口。为此,请处理 NotifyIcon 的 MouseDoubleClick 事件。在这里,您使用Show() 方法显示表单。

在表单调整大小事件中,在那里进行检查并隐藏表单

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

参考:
How do I minimize a WinForms application to the notification area?
minimize app to system tray

【讨论】:

  • SO 应该也可以选择标记重复的答案! stackoverflow.com/a/6317078/762730
  • @Sandeep:他想隐藏弹出窗口也不完全相同的问题,否则我总是很乐意先做这项工作而不是在这里写..谢谢你的建议。
  • 好吧,我一定遗漏了什么,我不知道它是什么,所以如果你能完整地为我拼出来,因为我很愚蠢,我输入的完整代码是什么,我也想要让应用程序先到通知栏,我不希望它有一个弹出窗口,或者隐藏弹出窗口
  • 所以他们正在做的是隐藏您的表单,并显示通知图标。这使您的表单看起来像是在托盘中,但它只是隐藏了表单。这是您最接近将程序放入托盘的方法。
【解决方案2】:

使用以下代码:

if (WindowState == FormWindowState.Minimized)
        {
            this.Hide();
        }

当您最小化表单时,只需将其隐藏即可。 您必须在Form_Resize 事件中实现上述代码。

然后点击任务栏图标恢复其状态如下:

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

为此,您需要使用notifyIcon_Click 事件。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多