6

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

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

为什么这不起作用?

4

2 回答 2

8

处理表单的 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;
}

参考:
如何将 WinForms 应用程序最小化到通知区域?
将应用程序最小化到系统托盘

于 2013-04-22T06:27:31.673 回答
5

使用以下代码:

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

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

然后单击任务栏图标只需恢复其状态,如下所示:

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

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

希望它有帮助。

于 2013-04-22T06:26:48.283 回答