Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使BaloonTiptText可见,直到单击为止_C#_.net_Winforms_Notifyicon - Fatal编程技术网

C# 使BaloonTiptText可见,直到单击为止

C# 使BaloonTiptText可见,直到单击为止,c#,.net,winforms,notifyicon,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 =

我的程序中有一个
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)后,阳台尖端不可见。但是我想显示baloon提示,直到它被单击,因为我已经单击了
baloontipclicked
事件

如何使baloontip永远可见

来自MSDN:

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

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


如果你真的想要有一个不同的行为,你可能应该使用其他的东西,其他的对象或者模拟一些类似的表单,在这些表单中你可以完全控制行为,你可以根据你的代码显示、隐藏和关闭它。

如果没有点击它,你可以再次显示它。 您有一个关闭事件(BallootTipClosed),如果用户没有选中它,只需再次显示它

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

可能的副本。不行。如果用户处于活动状态(键盘和鼠标活动->),默认Windows行为将在特定超时后淡出。shell会强制执行相关规则。超时不会开始滴答作响,直到它有一些迹象表明用户可能已经看到了它,并且不能设置得太长。如果你想要一个永久的通知,那么你不应该使用气球提示。一个普通的顶级窗体是最好的,否则就不能保证它能与其他顶级窗口竞争。这只是一个小问题。如果打开时出现另一个通知,则会使应用程序处于无响应状态。考虑将此代码段应用于代码的人应该对其进行编辑,将其限制为同时只发送一个通知。