C# 实现程序托盘功能
例子代码
链接:https://pan.baidu.com/s/1fzMFawFsYi-CjMGzXF-9sA
提取码:3acn
新建一个Form1窗体,监听窗体大小变化事件、窗体关闭事件
/// <summary> /// 窗体大小监听 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) { this.ShowInTaskbar = false; notifyIcon1.Visible = true; } } /// <summary> /// 关闭窗口 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (!formClose) { //不是通过菜单关闭程序 WindowState = FormWindowState.Minimized; e.Cancel = true; } else { timer1.Stop();//关闭定时器 } }
添加控件:
notifyIcon(通过notifyIcon1.Visible = false/true控制托盘显示)
/// <summary> /// 鼠标点击托盘图标 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void notifyIcon1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (WindowState == FormWindowState.Minimized) { WindowState = FormWindowState.Normal; this.Activate();//激活窗口 this.ShowInTaskbar = true;//托盘中显示 notifyIcon1.Visible = false; } } }
contextMenuStrip(托盘右键菜单)
#region 菜单点击事件 private void 提示信息ToolStripMenuItem_Click(object sender, EventArgs e) { notifyIcon1.ShowBalloonTip(5000, "提示", "这是提示效果!", ToolTipIcon.Info); } private void 开始闪烁ToolStripMenuItem_Click(object sender, EventArgs e) { timer1.Start(); } private void 取消闪烁ToolStripMenuItem_Click(object sender, EventArgs e) { timer1.Stop(); } private void 退出程序ToolStripMenuItem_Click(object sender, EventArgs e) { formClose = true;//菜单关闭程序 this.Close(); } #endregion
timer(控制托盘图片闪烁,做成消息提醒功能,需要增加两张.ico图到 Properties.Resources)
/// <summary> /// 闪烁图表定时器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick(object sender, EventArgs e) { notifyIcon1.Icon = shan ? Properties.Resources.程序 : Properties.Resources.托盘; shan = !shan; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!