首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最小化系统托盘中的应用程序

最小化系统托盘中的应用程序
EN

Stack Overflow用户
提问于 2011-10-02 16:52:14
回答 9查看 215.6K关注 0票数 119

我有一个由C#和Visual Studio2010支持的Windows forms应用程序。

我如何最小化我的应用程序到系统托盘(不是任务栏),然后当双击系统托盘时把它带回来?有什么想法吗?另外,我如何在系统托盘的图标中制作一些菜单,当我右键单击它时,它会显示一个类似登录、断开连接、连接之类的菜单。另外,有没有什么方法可以像从系统托盘中弹出的气球一样显示?

PS:我已经添加了一个notifyIcon,但我不知道如何使用它。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-10-02 16:53:57

  • C# System Tray Minimize To Tray With NotifyIcon
  • Minimize window to system tray

处理窗体的Resize事件。在此处理程序中,重写Resize事件的基本功能以使窗体最小化到系统托盘而不是任务栏。这可以通过在窗体的Resize事件处理程序中执行以下操作来完成:检查窗体的WindowState属性是否设置为FormWindowState.Minimized。如果是,请隐藏窗体,启用NotifyIcon对象,并显示显示某些信息的气球提示。WindowState变为FormWindowState.Normal后,通过将其Visible属性设置为false来禁用NotifyIcon对象。现在,您希望在双击任务栏中的NotifyIcon对象时窗口重新出现。为此,处理NotifyIcon的MouseDoubleClick事件。在这里,您将使用Show()方法显示表单。

代码语言:javascript
运行
复制
private void frmMain_Resize(object sender, EventArgs e)
{
    if (FormWindowState.Minimized == this.WindowState)
    {
       mynotifyicon.Visible = true;
       mynotifyicon.ShowBalloonTip(500);
       this.Hide();
    }

    else if (FormWindowState.Normal == this.WindowState)
    {
       mynotifyicon.Visible = false;
    }
}
票数 157
EN

Stack Overflow用户

发布于 2013-04-23 15:40:09

我发现这就完成了整个解决方案。上面的答案无法从任务栏中删除窗口。

代码语言:javascript
运行
复制
private void ImportStatusForm_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(3000);
        this.ShowInTaskbar = false;
    }
}

private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
    this.WindowState = FormWindowState.Normal;
    this.ShowInTaskbar = true;
    notifyIcon.Visible = false;
}

此外,最好使用窗体设计器设置notify图标控件的以下属性。

代码语言:javascript
运行
复制
this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; //Shows the info icon so the user doesn't think there is an error.
this.notifyIcon.BalloonTipText = "[Balloon Text when Minimized]";
this.notifyIcon.BalloonTipTitle = "[Balloon Title when Minimized]";
this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon"))); //The tray icon to use
this.notifyIcon.Text = "[Message shown when hovering over tray icon]";
票数 72
EN

Stack Overflow用户

发布于 2014-05-22 00:47:49

如果是我的话

代码语言:javascript
运行
复制
private void Form1_Resize(object sender, EventArgs e)
{
     if (FormWindowState.Minimized == this.WindowState)
     {
          notifyIcon1.Visible = true;
          notifyIcon1.ShowBalloonTip(500);
          this.Hide();    
     }
     else if (FormWindowState.Normal == this.WindowState)
     {
          notifyIcon1.Visible = false;
     }
}

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
     this.Show();
     this.WindowState = FormWindowState.Normal;
}
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7625421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档