如何从代码中关闭NotifyIcon Balloon ToolTip?

时间:2013-12-16 15:57:48

标签: c# .net winforms .net-3.5 notifyicon

我们正在使用NotifyIcon在用户收到需要他们注意的新消息时提醒用户。如果其他人首先收到消息,则应该再次隐藏通知图标,但是我在查找如何从后面的代码中关闭气球时遇到问题。

我的代码看起来像这样:

myNotifyIcon.ShowBalloonTip(2000, title, message, icon);

我已经尝试了here找到的建议,但没有一个是合适的。

  • 使用myNotifyIcon.Visible = true不会隐藏

  • 使用myNotifyIcon.Visible = false; myNotifyIcon.Visible = true;会隐藏它,但它也隐藏了托盘中的图标,当它再次显示时,它会显示一个不同的位置。

  • myNotifyIcon.Show(0)不是有效的方法

  • myNotifyIcon.ShowBalloonTip(0)myNotifyIcon.ShowBalloonTip(1)似乎不起作用,因为气球刚刚显示,并且似乎根本不会消失。

我阅读this question关于使用WinAPI查找窗口并向其发送WM_CLOSE消息,但我不太确定如何可靠地执行此操作。

如何从后面的代码中关闭NotifyIcon

2 个答案:

答案 0 :(得分:1)

我从来没有找到一种非黑客的方式来做到这一点。文档说:

  

操作强制执行最小和最大超时值   系统,通常分别为10秒和30秒   可能因操作系统而异。超时值   太大或太小被调整到适当的最小值或   最大值。

尽管这并没有明确解决明确关闭气球的问题,但它向我表明ShowBalloonTip()方法的调用者只有在显示气球后才能完全控制气球。

我找到的最佳选择是你已经提到过的一个:

myNotifyIcon.Visible = false;
myNotifyIcon.Visible = true;

不理想,但它有效。另一个想法是更改气球中显示的消息,以指示上一条消息已过时:

myNotifyIcon.ShowBalloonTip(2000, "Title", "Never mind!", ToolTipIcon.Info);

答案 1 :(得分:0)

有一种简单的方法可以做到这一点。

myNotifyIcon.ShowBalloonTip(2000);
myNotifyIcon.visible = true;
this.Hide();

试试这个,它绝对可以100%工作。