导读:本期聚焦于小伙伴创作的《C#怎么操作系统托盘图标 C#如何用NotifyIcon创建最小化到系统托盘的程序》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#怎么操作系统托盘图标 C#如何用NotifyIcon创建最小化到系统托盘的程序》有用,将其分享出去将是对创作者最好的鼓励。

在C# WinForms桌面程序开发中,通过NotifyIcon组件可以轻松实现系统托盘图标的管理,让程序支持最小化到托盘、托盘图标交互等常见功能。下面将从基础配置到完整功能实现逐步讲解具体操作方法。

C#怎么操作系统托盘图标 C#如何用NotifyIcon创建最小化到系统托盘的程序

一、添加NotifyIcon组件

首先需要在WinForms窗体项目中添加NotifyIcon组件,操作步骤如下:

  • 打开窗体的设计视图,在工具箱中找到NotifyIcon组件,拖拽到窗体上
  • 选中拖拽后的NotifyIcon组件,在属性面板中设置Icon属性,选择要显示的托盘图标文件(建议尺寸为16*16或32*32的ico格式)
  • 设置Text属性,该内容会在鼠标悬停在托盘图标时显示,比如设置为程序名称
  • Visible属性初始设置为false,避免程序启动时就显示托盘图标

二、实现窗口最小化到托盘

要实现窗口最小化后隐藏到系统托盘,需要监听窗体的最小化事件,在事件触发时隐藏窗体并显示托盘图标。核心代码如下:

using System;
using System.Windows.Forms;

namespace TrayIconDemo
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            // 监听窗体尺寸变化事件
            this.Resize += MainForm_Resize;
        }

        private void MainForm_Resize(object sender, EventArgs e)
        {
            // 判断窗体是否最小化
            if (this.WindowState == FormWindowState.Minimized)
            {
                // 隐藏窗体
                this.Hide();
                // 显示托盘图标
                notifyIcon1.Visible = true;
            }
        }
    }
}

三、实现托盘图标点击恢复窗口

用户点击托盘图标时,需要恢复窗体显示并隐藏托盘图标,我们可以监听NotifyIcon的MouseClick事件实现该逻辑:

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
    // 判断是否是左键点击
    if (e.Button == MouseButtons.Left)
    {
        // 恢复窗体显示
        this.Show();
        // 将窗体状态设置为正常
        this.WindowState = FormWindowState.Normal;
        // 激活窗体,使其显示到最前
        this.Activate();
        // 隐藏托盘图标
        notifyIcon1.Visible = false;
    }
}

注意需要在设计视图中,选中notifyIcon1组件,在属性面板的事件栏里绑定MouseClick事件到上述方法,或者在窗体构造函数中手动绑定:

public MainForm()
{
    InitializeComponent();
    this.Resize += MainForm_Resize;
    // 手动绑定托盘图标点击事件
    this.notifyIcon1.MouseClick += notifyIcon1_MouseClick;
}

四、添加托盘图标右键菜单

通常托盘图标需要支持右键菜单,提供恢复窗口、退出程序等选项,我们可以通过ContextMenuStrip组件实现:

首先在窗体上拖拽一个ContextMenuStrip组件,添加两个菜单项,分别命名为恢复窗口退出程序,然后设置notifyIcon1的ContextMenuStrip属性为该菜单组件。两个菜单项的点击事件代码如下:

private void 恢复窗口ToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 恢复窗口逻辑和左键点击托盘图标一致
    this.Show();
    this.WindowState = FormWindowState.Normal;
    this.Activate();
    notifyIcon1.Visible = false;
}

private void 退出程序ToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 释放托盘图标资源
    notifyIcon1.Visible = false;
    notifyIcon1.Dispose();
    // 退出应用程序
    Application.Exit();
}

五、程序退出时释放资源

为了避免程序退出后托盘图标仍然残留,需要在窗体关闭事件中处理托盘图标的资源释放:

private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
    // 隐藏并释放托盘图标
    if (notifyIcon1.Visible)
    {
        notifyIcon1.Visible = false;
        notifyIcon1.Dispose();
    }
}

同样需要在窗体属性事件中绑定FormClosing事件到上述方法。

常见问题说明

  • 如果托盘图标不显示,首先检查Icon属性是否正确设置了有效的ico文件,其次检查Visible属性是否在需要显示时设置为true
  • 窗体恢复时如果无法激活到前台,可以在Activate()方法前添加this.TopMost = true;,激活后再设置为false
  • 托盘图标点击事件如果无响应,检查事件是否正确绑定,以及是否判断了鼠标点击的按键类型

C#NotifyIcon系统托盘图标WinForms修改时间:2026-07-23 05:36:24

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。