我写过的应用程序会在某个事件发生时显示气球提示(使用NotifyIcon.ShowBalloonTip()
)。系统锁定时也会发生这种情况。
在这种情况下,气球提示在解锁后根本不会立即显示 - 两种情况都很好并且有意义。然而,它会在一段时间后显示 - 有时超过半小时。
这种行为非常烦人,我想知道是否有办法阻止它,除了在显示气球提示之前检查屏幕是否被锁定。
答案 0 :(得分:1)
任务栏通知(这是官方术语)与它们相关的棘手逻辑。
通知会立即显示,或者从某些状态恢复后显示,例如当PC被锁定(或播放全屏游戏)时:
http://blogs.msdn.com/b/oldnewthing/archive/2005/01/10/349894.aspx
在Vista及更高版本中,通知仅显示9秒,且无法调整:
http://blogs.msdn.com/b/oldnewthing/archive/2011/05/18/10165605.aspx
首次登录用户的第一个小时内根本不会显示通知气球:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee330740(v=vs.85).aspx
最重要的是,Windows不保证用户会看到它们。在Windows UX Guidelines中,他们声明:
不要认为用户会看到您的通知。用户不会看到 他们的时间:
- 他们沉浸在工作中。
- 他们没有注意。
- 他们远离电脑。
- 他们正在运行全屏应用程序。
- 他们的管理员已关闭其计算机的所有通知。
它还声明用户可能无法及时看到消息,在这种情况下,您应该在消息不再相关时将其排队。您可以致电ShowBalloonTip(0, String.Empty, String.Empty, ToolTipIcon.None)
来完成此操作。我认为这样做是防止不相关气球显示的最佳选择。