在C#中,通知图标气泡提示不显示?

12

我正在使用这段代码在我的form1_load事件下:

notifyIcon1.Visible = true; 
notifyIcon1.ShowBalloonTip(5000, "Welcome", "Hello " + User, ToolTipIcon.Info); 

我甚至检查了我的注册表,值为1。为什么气球没有显示?我确实有一个来自我的通知图标的图标,并且它正在显示。但气球并没有出现!

3个回答

19

看起来你忘记设置它的图标了,就像这样:

notifyIcon1.Icon = SystemIcons.Exclamation;
notifyIcon1.Visible = true; 
notifyIcon1.ShowBalloonTip(5000, "Welcome", "Hello " + User, ToolTipIcon.Info); 

请阅读http://www.csharp411.com/notifyiconshowballoontip-issues/获取更多关于NI问题的信息。


我无法解释为什么,但只需添加以下行: notifyIcon1.Icon = SystemIcons.Exclamation; 一切正常工作。感谢 @HatSoft。 - Matteo Gariglio

15

您可能需要发布在窗体Load事件中的其余代码,但是这里有一些建议:

  1. 确保窗体的Load事件已经连接。
  2. 确保已为通知图标分配了图标。

此外,请注意气球提示无法保证显示。请参阅msdn的NotifyIcon.ShowBalloonTip方法文章中的备注部分:

备注
操作系统强制执行最小和最大超时值,通常为10和30秒,但这取决于操作系统。 过大或过小的超时值将被调整为适当的最小或最大值。另外,如果用户似乎没有使用计算机(没有键盘或鼠标事件发生),则系统不会将此时间计入超时时间。

任务栏上只能显示一个气球提示。当任务栏上已经显示气球提示时,尝试显示气球提示会导致超时值被忽略。 这个行为在不同的操作系统和气球提示来自另一个应用程序还是相同应用程序时略有不同。 当第二个气球提示来自另一个应用程序时,在第二个气球提示出现之前,第一个气球提示会显示最小超时值,而不管超时值的大小。 在大多数情况下,如果气球提示来自同一应用程序,则在对ShowBalloonTip方法进行另一个调用时,第一个气球提示立即关闭。 在某些情况下,第二个气球提示将在第一个气球提示上方打开。

标题文本将以粗体字显示在气球顶部附近。


请查看我的回答中提供的链接,其中演示了如何使用气球提示并分配图标。 - Metro Smurf
3
"+1" 表示“赞同”或“同意”,这里的意思是同意前面所说的话。"Make sure you've assigned an icon for the notify icon." 的意思是“确保你已经为通知图标指定了一个图标”。我曾认为在分配新图标之前会显示默认图标。 - Joel

3

下面是一些示例代码,与@MetroSmurf已经提到的内容相关。请注意,在显示NotifyIcon之前(通常在表单构造函数中),必须调用this.InitializeComponent();

public Form1()
{
    this.InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    notifyIcon1.Icon = new Icon(@"C:\SomePath\MyIcon.ico");
    notifyIcon1.Visible = true;
    notifyIcon1.ShowBalloonTip(5000, "Welcome", "Hello " + User, ToolTipIcon.Info);
}

还要确保Windows已配置为允许通知。在Windows 7中,右键单击任务栏,点击属性,在通知区域中点击自定义...,勾选始终显示任务栏上的所有图标和通知选项,然后点击确定


@EliteGamer 在Windows中启用了通知吗?请查看我的更新答案。 - Kevin Aenmey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接