【问题标题】:Make visible baloonTipText until it is clicked使 baloonTipText 可见,直到它被点击
【发布时间】:2011-09-17 07:07:26
【问题描述】:

我的程序中有一个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 永远可见?

【问题讨论】:

  • stackoverflow.com/questions/2920029/… 的可能重复项。做不到。如果用户处于活动状态(键盘和鼠标活动 -> msdn.microsoft.com/en-us/library/ms160064.aspx,默认 Windows 行为会在特定超时后消失
  • shell 对此有强制规定。超时不会开始计时,直到它有一些迹象表明用户可能已经看到它并且不能太长。如果您想要永久通知,则不应使用气球提示。常规的最顶层窗体是最好的,否则无法保证它可以与其他最顶层窗口竞争。

标签: c# .net winforms notifyicon


【解决方案1】:

来自 MSDN:

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

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

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

【讨论】:

    【解决方案2】:

    如果它没有被点击,你可以再次显示它。 您有关闭事件 (BalloonTipClosed),如果用户没有点击它,请再次显示它。

    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;
        (..)
    }
    

    【讨论】:

    • 只是一个小问题。如果在此打开时出现另一个通知,则它将应用程序置于无响应状态。考虑将这个 sn-p 应用到他们的代码的人应该编辑它以限制同时只有一个通知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2021-05-17
    相关资源
    最近更新 更多