C# NotifyIcon.ShowBallootTip不保持超时

C# NotifyIcon.ShowBallootTip不保持超时,c#,winforms,C#,Winforms,我显示通知信息: notifyIcon.ShowBalloonTip(29000, "title", "message", ToolTipIcon.Info); 它应该显示29000毫秒,但不到一秒钟就消失了 我知道这是由操作系统控制的。但是应该有办法延长演出的持续时间吗 使用windows 7。在显示引出序号之前,请确保Notify图标可见: notifyIcon.Visible = true; //then show the balloon tip 此外,如果显示任何其他气球提示,您的

我显示通知信息:

 notifyIcon.ShowBalloonTip(29000, "title", "message", ToolTipIcon.Info);
它应该显示29000毫秒,但不到一秒钟就消失了

我知道这是由操作系统控制的。但是应该有办法延长演出的持续时间吗


使用windows 7。

在显示引出序号之前,请确保Notify图标可见:

notifyIcon.Visible = true;
//then show the balloon tip
此外,如果显示任何其他气球提示,您的提示将被忽略


来自ShowBalloadTip上的MSDN文章

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

您可以在下面阅读整个函数:


这取决于操作系统的设置,在每个操作系统中都是不同的。
最好的方法是使用一个自制的阳台。

我知道这是一个很老的问题,现在要回答,但它是为了将来的参考和读者谁会遇到这个问题

我在一个winform应用程序中遇到了与上述问题相同的问题,然后我遇到了这个Github链接-

是的,它很容易集成到您的c#winform应用程序中。您所要做的就是-

  • 从上面的Github链接下载代码
  • 将以下类文件添加到c#winform应用程序中

    FormAnimator.cs

    NativeMethods.cs

  • Notifications.cs表单添加到应用程序中

  • 在项目的代码中创建toast通知表单对象,然后 调用
    Show()
    方法来显示它

示例代码

var toastNotification = new Notification
(
    "My Notification", 
    message, 
    durationsTime, 
    FormAnimator.AnimationMethod.Slide,
    FormAnimator.AnimationDirection.Up
);

//PlayNotificationSound("normal");
toastNotification.Show();

不知何故,在Windows 7中,超时似乎不起作用,就像它被操作系统覆盖一样。Windows XP似乎尊重超时。也许在气球消失之前,您设置了
notifyIcon.Visible=false
。非常棒,非常有用的工作!非常感谢!