实现步骤

  • 创建 NotifyIcon 控件并设置属性;
  • 编写 NotifyIcon 响应控制事件;
  • 在主窗体的Load事件中将 NotifyIcon 添加到系统托盘;
  • 程序退出时,移除系统托盘的 NotifyIcon;

NotifyIcon 控件,通常用于在系统托盘中显示图标,通过使用它就可以我们想要的效果。

属性 描述
Icon 在系统托盘中显示的图标
Text 鼠标悬停在图标时显示的文本
Visible 指定是否可见

常用方法

方法 描述
ShowContextMenu 在系统托盘上下文菜单中显示指定的菜单

添加控件

将NotifyIcon和一个ContextMenuStrip控件。拖到主窗体中可以修改控件名称

  • NotifyIcon 托盘图标
  • ContextMenuStrip 托盘图标右击弹出的菜单

设置控件

点击 ContextMenuStrip 右上方的三角图标 -> 编辑项,弹出项信合编辑器

添加右健菜单信息

添加主窗体事件

在最小化或关闭主窗体时,显示在任务栏托盘区域,实现了单击关闭时,不真正关闭程序,而是将主界面隐藏HIDE掉,同时开始显示托盘菜单。

//  只有Form_Closing事件中 e.Cancel可以用。
// 你的是Form_Closed事件。 Form_Closed事件时窗口已关了 ,Cancel没用了;
// Form_Closing是窗口即将关闭时询问你是不是真的关闭才有Cancel事件 private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)
{ // 注意判断关闭事件reason来源于窗体按钮,否则用菜单退出时无法退出!
if (e.CloseReason == CloseReason.UserClosing)
{
//取消"关闭窗口"事件
e.Cancel = true; // 取消关闭窗体 //使关闭时窗口向右下角缩小的效果
this.WindowState = FormWindowState.Minimized;
this.mainNotifyIcon.Visible = true;
//this.m_cartoonForm.CartoonClose();
this.Hide();
return;
}
}

实现双击托盘打开主程序

//  添加托盘程序
// 版本更新自1.0.1
private void mainNotifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.Visible)
{
this.WindowState = FormWindowState.Minimized;
this.mainNotifyIcon.Visible = true;
this.Hide();
}
else
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
this.Activate();
}
}

// 添加托盘程序右键菜单项
// 版本更新自1.0.1
// 退出
// 添加日期 -- 2015-07-29 21:44
private async void toolStripMenuItemQuit_Click(object sender, EventArgs e)
{
if (MessageBox.Show("你确定要退出?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{ this.mainNotifyIcon.Visible = false;
this.Close();
this.Dispose();
System.Environment.Exit(System.Environment.ExitCode); }
}

C# WinForm 托盘程序的更多相关文章

  1. WinForm设置任务栏托盘程序

    程序设计界面如下图所示: 1.在程序初始化加载的时候设置程序图标,具体code如下: private void Form1_Load(object sender, EventArgs e) { //t ...

  2. winform托盘时,要运行一个实例,解决办法

    需求:winform应用程序,当隐藏到托盘时,再次运行exe程序,让其只运行一个实例,并且把窗口从托盘中显示出来 应用程序名可以通过下面代码,获取到: Process current = Proces ...

  3. 用c#创建支持多语言的WinForm应用程序

    实现多语言的方法可能有使用资源文件,或者配置xml两种方法吧.没时间研究过多,学习了一下使用资源文件的方法,成功了. 在.net2.0 中,m$ 为我们提供了一种简单方便的方法, 使用资源文件 1.新 ...

  4. Winform应用程序实现通用消息窗口

    记得我之前发表过一篇文章<Winform应用程序实现通用遮罩层>,是实现了透明遮罩的消息窗口,功能侧重点在动图显示+消息提醒,效果看上去比较的炫,而本篇我又来重新设计通用消息窗口,功能重点 ...

  5. 解决Winform应用程序中窗体背景闪烁的问题

    本文转载:https://my.oschina.net/Tsybius2014/blog/659742 我的操作系统是Win7,使用的VS版本是VS2012,文中的代码都是C#代码. 这几天遇到一个问 ...

  6. Winform应用程序实现通用遮罩层

    在WEB上,我们在需要进行大数据或复杂逻辑处理时,由于耗时较长,一般我们会在处理过程中的页面上显示一个半透明的遮罩层,上面放个图标或提示:正在处理中...等字样,这样用户体验就比较好了,然而如果在Wi ...

  7. C# WinForm 应用程序 开启Console窗口

    /********************************************************************************* * C# WinForm 应用程序 ...

  8. WinForm应用程序之注册模块的设计与实现

    Posted on 2012-11-13 10:21 星星之火116 阅读(3260) 评论(4) 编辑 收藏 我们在安装一些桌面应用程序的时候,往往在会有提示当前用户使用的是试用版,要进行注册.刚好 ...

  9. delphi 托盘程序 转

    Delphi的托盘编程   .现在很多程序都用这个,比如傲游,迅雷等,主要代码如下: uses Windows, Messages, SysUtils, Variants, Classes, Grap ...

  10. Delphi 托盘程序实现 转

    unit MainUnit; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, F ...

随机推荐

  1. att&ack学习笔记6

    att&ck攻击能力和防御能力的可量化可衡量的标准,是否防得住,是否检测的了,和同行的对比攻击行为(网络威胁分析,研究,行业报告)----->ATT&CK(对抗模型,对抗流程细分 ...

  2. 24暑集训Week1

    24暑集训Week1 夜行的人,若你不唱歌的话,不惊醒这黑夜的话,就永远也走不出呼蓝别斯了. 这重重的森林,这崎岖纤细的山路,这孤独疲惫的心. 亲爱的,哪怕后来去到了城市,走夜路时也要大声地唱歌,像喝 ...

  3. 【问题解决】java.lang.SecurityException: JCE cannot authenticate the provider BC

    问题复现 历史项目升级JDK(由1.7升级到8),进行加密/解密时出现报错java.lang.SecurityException: JCE cannot authenticate the provid ...

  4. 国产化UOS适配

    配置本地iso镜像为apt源 把镜像放到目录下 /home/gaohongyu/debian/uniontechos-server-20-enterprise-1030-arm64.iso 创建目录 ...

  5. PCI-5565-反射内存RFM2G的学习与使用

    1.介绍 反射内存集成在反射内存卡上,我们使用的是PCI总线的反射内存卡PCI5565,还有PCIE和其它总线类型的反射内存卡,原理差不多.在两台计算机的PCI插槽插两块反射内存卡,然后通过光纤连接. ...

  6. 题解:CF1301D Time to Run

    CF1301D Time to Run 题解 思维题. 分析 把一个格子视作一个点,每个点的度数都是偶数,所以这是一张欧拉图.而需要走遍整个方格图,可以证明只要 \(k\) 不超过 \(4nm-2n- ...

  7. Codeforces Round 971 (Div. 4) E 题解析

    # E题 Klee's SUPER DUPER LARGE Array!!! 题目描述 思路: 对于这道题,首先观察到题目求的是最小可能值,而且数据的范围是1e9范围,所以首先可以考虑的方法就是O(l ...

  8. 2023NOIP A层联测10 T4 子序列

    2023NOIP A层联测10 T4 子序列 题面及数据范围 Ps:链接来自accoderOJ. 考场2小时才做完 T1,抱着试一试的心态看了 T4,然后想到做法了,调了 1 个多小时没调除了,赛后发 ...

  9. 鸿蒙NEXT开发案例:血型遗传计算

    [引言] 血型遗传计算器是一个帮助用户根据父母的血型预测子女可能的血型的应用.通过选择父母的血型,应用程序能够快速计算出孩子可能拥有的血型以及不可能拥有的血型.这个过程不仅涉及到了简单的数据处理逻辑, ...

  10. WebLogic T3反序列化漏洞

    目录 前言 T3协议概述 T3反序列漏洞分析 漏洞复现 修复措施 前言 WebLogic的反序列化漏洞是一个经典的漏洞系列,原因就在于WebLogic在通信过程中使用T3协议传输数据,涉及到了序列化和 ...