在点击之前制作可见的baloonTipText

sus*_*hma 5 .net c# notifyicon winforms

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);
Run Code Online (Sandbox Code Playgroud)

在设定时间(999999999)之后,气球尖端是不可见的.但我想要显示气球提示,直到它被点击,因为我有baloontipclicked事件.

如何让baloontip永远可见?

Dav*_*ras 7

来自MSDN:

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

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

如果你想要真正拥有不同的行为,你应该使用其他东西,其他对象或模拟与你完全控制行为的表格类似的东西,你可以根据自己的意愿显示,隐藏和关闭你的代码.


Kal*_*lay 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;
    (..)
}
Run Code Online (Sandbox Code Playgroud)