在点击之前制作可见的baloonTipText

时间:2011-09-17 07:07:26

标签: c# .net winforms notifyicon

我的程序中有一个NotifyIcon,它在任务栏中显示一个气球提示。我把代码编写为

notifyIcon1.Icon = new Icon(SystemIcons.Application, 40, 40);
notifyIcon1.Visible = true;
notifyIcon1.Text = "Test Notify Icon Demo";
notifyIcon1.BalloonTipText =count+ " Alerts";
notifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
notifyIcon1.BalloonTipTitle = "Alert!";
notifyIcon1.ShowBalloonTip(999999999);

在设定时间(999999999)后,气球尖端不可见。但我希望在点击之前显示气球提示,因为我有baloontipclicked事件。

如何让baloontip永远可见?

2 个答案:

答案 0 :(得分:7)

来自MSDN的

  

操作强制执行最小和最大超时值   系统并且通常分别为10秒和30秒,但是这一点   可能因操作系统而异。超时值   太大或太小被调整到适当的最小值或   最大值。此外,如果用户似乎没有使用   计算机(没有发生键盘或鼠标事件)然后   系统不计算此时间超时。

似乎无法覆盖最大超时(最终由Windows调整,即使您指定更长时间也限制为30秒),因此通知将消失,不会等待您在2分钟后点击它

如果您想要真正拥有不同的行为,您应该使用其他东西,其他对象或模拟与您完全控制行为的表单相似的内容,并且您可以根据需要显示,隐藏和关闭代码

答案 1 :(得分:7)

如果尚未点击,则可以再次显示。 你有关闭事件(BalloonTipClosed),如果用户没有ckicked它只是再次显示它。

private void ShowBalloonTip(int minutes) {
    notifyIcon.BalloonTipIcon = ToolTipIcon.Error;
    notifyIcon.BalloonTipText = "Text";
    notifyIcon.BalloonTipTitle = "Title";
    notifyIcon.ShowBalloonTip(minutes* 60 * 1000);
    m_showUntil = DateTime.Now.AddMinutes(minutes);
}


private void notifyIcon_BalloonTipClosed(object sender, EventArgs e) {
    if (m_showUntil > DateTime.Now)
        notifyIcon.ShowBalloonTip(60 * 1000);
}
private void notifyIcon_BalloonTipClicked(object sender, EventArgs e) {
    m_showUntil = DateTime.MinValue;
    (..)
}