显示气球通知

Ben*_*Ben 37 .net c# notifyicon winforms notification-area

我正在尝试使用以下代码来显示气球通知.我已经验证它是使用断点执行的.它也没有显示任何错误.

我应该怎么做来调试这个,因为它不会抛出错误而不显示气球?

private void showBalloon(string title, string body)
{
    NotifyIcon notifyIcon = new NotifyIcon();
    notifyIcon.Visible = true;

    if (title != null)
    {
        notifyIcon.BalloonTipTitle = title;
    }

    if (body != null)
    {
        notifyIcon.BalloonTipText = body;
    }

    notifyIcon.ShowBalloonTip(30000);
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ira 46

您实际上没有指定要在任务栏中显示的图标.在LINQPad中运行代码,只需notifyIcon.Icon = SystemIcons.Application在调用ShowBalloonTipI 之前添加就可以显示提示.另请注意,您应该Dispose在完成NotifyIcon实例后致电.

  • 我在Window Closing/Closed上使用`Dispose`,否则它会一直徘徊,直到你将鼠标移到它上面. (2认同)

Jer*_*ook 28

马修确定了这个问题,但我仍然努力将所有部分放在一起.所以我认为一个在LINQPad中工作的简洁示例会有所帮助(并且可能在其他地方).只需引用System.Windows.Forms程序集,然后粘贴此代码即可.

var notification = new System.Windows.Forms.NotifyIcon()
{
    Visible = true,
    Icon = System.Drawing.SystemIcons.Information,
    // optional - BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info,
    // optional - BalloonTipTitle = "My Title",
    BalloonTipText = "My long description...",
};

// Display for 5 seconds.
notification.ShowBalloonTip(5000);

// This will let the balloon close after it's 5 second timeout
// for demonstration purposes. Comment this out to see what happens
// when dispose is called while a balloon is still visible.
Thread.Sleep(10000);

// The notification should be disposed when you don't need it anymore,
// but doing so will immediately close the balloon if it's visible.
notification.Dispose();
Run Code Online (Sandbox Code Playgroud)

  • 感谢这个示例,只是注意到了一种处理通知的方法-在ShowBalloonTip()之前添加这些事件处理程序似乎对我来说效果很好,而无需线程睡眠:`notification.BalloonTipClosed + =(sender,args)=> notification.Dispose();和notification.BalloonTipClicked + =(sender,args)=> notification.Dispose();`(我发现两者都是必需的,具体取决于用户单击关闭还是将其保留时间出来)。 (2认同)