我们正在使用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
?
答案 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%工作。