You need to enable JavaScript to run this app. Winform中如何修改notifyicon的tooltipicon并添加自定义图标?
优惠活动
大模型
产品
解决方案
定价
更多

Winform中如何修改notifyicon的tooltipicon并添加自定义图标?

Winform NotifyIcon 自定义图标解决方案

你当前使用的ShowBalloonTip方法第四个参数为ToolTipIcon枚举,仅支持系统预设的无图标、信息、警告、错误四种图标,要实现自定义图标需求可参考以下方案:


1. 修改托盘区域NotifyIcon本身的显示图标

直接修改Icon属性即可,示例代码:

// 替换为你自己的图标资源,建议使用ico格式
notifyIcon1.Icon = Properties.Resources.自定义托盘图标;

如果需要修改鼠标悬停在托盘图标上的提示文字,修改Text属性即可,最多支持63个字符:

notifyIcon1.Text = "自定义提示文字";

2. 气泡提示使用自定义图标

方案A:.NET Core 3.0+ / .NET 5+ 版本(内置支持)

高版本.NET Winform的NotifyIcon已内置自定义气泡图标属性,直接调用即可:

// 先指定自定义气泡图标
notifyIcon1.CustomBalloonIcon = Properties.Resources.自定义气泡图标;
// 调用ShowBalloonTip时第四个参数必须传ToolTipIcon.None,否则系统默认图标会覆盖自定义图标
notifyIcon1.ShowBalloonTip(3000, "Message", "The File has been successfully uploaded!!", ToolTipIcon.None);

方案B:.NET Framework 全版本兼容(调用Win32 API实现)

.NET Framework无内置自定义气泡图标属性,需要调用系统API实现:

  • 首先在窗体类中导入API声明:
using System.Runtime.InteropServices;
using System.Drawing;

[StructLayout(LayoutKind.Sequential)]
public struct NOTIFYICONDATA
{
    public int cbSize;
    public IntPtr hWnd;
    public int uID;
    public int uFlags;
    public int uCallbackMessage;
    public IntPtr hIcon;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
    public string szTip;
    public int dwState;
    public int dwStateMask;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
    public string szInfo;
    public int uTimeoutOrVersion;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string szInfoTitle;
    public int dwInfoFlags;
    public Guid guidItem;
    public IntPtr hBalloonIcon;
}

[DllImport("shell32.dll", CharSet = CharSet.Auto)]
public static extern bool Shell_NotifyIcon(int dwMessage, ref NOTIFYICONDATA lpData);

public const int NIM_MODIFY = 0x00000001;
public const int NIF_INFO = 0x00000010;
public const int NIIF_USER = 0x00000004;
  • 封装自定义气泡调用方法:
public void ShowCustomBalloonTip(int timeout, string title, string content, Icon customIcon)
{
    NOTIFYICONDATA nid = new NOTIFYICONDATA();
    nid.cbSize = Marshal.SizeOf(nid);
    nid.hWnd = notifyIcon1.ContainerControl.Handle;
    nid.uID = 1; // 与NotifyIcon默认uID保持一致即可
    nid.uFlags = NIF_INFO;
    nid.szInfo = content;
    nid.szInfoTitle = title;
    nid.uTimeoutOrVersion = timeout;
    nid.dwInfoFlags = NIIF_USER;
    nid.hBalloonIcon = customIcon.Handle;
    Shell_NotifyIcon(NIM_MODIFY, ref nid);
}
  • 直接调用即可:
ShowCustomBalloonTip(3000, "Message", "The File has been successfully uploaded!!", Properties.Resources.自定义气泡图标);

注意事项

  • 自定义图标建议使用32x32像素的.ico格式文件,避免显示模糊
  • 部分Windows版本会限制应用通知权限,如果气泡不显示可先检查系统通知设置是否允许当前应用发送通知

内容的提问来源于stack exchange,提问作者HiSura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 13:18:02