12

我在 form1_load 下使用此代码

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

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

4

3 回答 3

19

看起来你忘了像这样为它设置图标

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

另请阅读有关 NI 问题的更多信息http://www.csharp411.com/notifyiconshowballoontip-issues/

于 2012-07-01T19:56:13.503 回答
15

您可能需要发布表单加载事件中的其余代码,但这里有一些建议:

  1. 确保表单的 Load 事件实际上已连接。
  2. 确保您已为通知图标分配了一个图标。

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

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

一次只能在任务栏上显示一个气球提示。在任务栏上当前显示气球提示时尝试显示气球提示会导致超时值被忽略。行为略有不同,具体取决于操作系统以及气球提示是否来自另一个或相同的应用程序。当第二个气球提示来自另一个应用程序时,第一个气球提示将在第二个出现之前显示为最小超时值,而不管超时值如何。在大多数情况下,如果气球提示来自同一个应用程序,当再次调用 ShowBalloonTip 方法时,第一个气球提示会立即关闭。在某些情况下,第二个气球会在第一个气球的顶部打开。

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

于 2012-07-01T19:41:36.007 回答
3

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

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 7 中右键单击任务栏,单击通知区域中的属性自定义...,勾选始终在任务栏上显示所有图标和通知选项,单击确定

于 2012-07-01T19:53:40.057 回答