C#系统托盘功能实现
C#系统托盘功能实现
- 功能
- 知识点
- notifyicon控件
- ContexMenuStrip控件
- SizeChanged
- windowState
- DialogResult类
- Application类
- MessageBoxButton
- 实现步骤
- 画面组态
- 代码编写
功能
软件在单击关闭按钮时,并不会退出进程,而是在任务栏显示一个系统托盘图标
知识点
notifyicon控件
命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll
指定可在通知区域创建图标的组件。 此类不能被继承。
通知区域中的图标是计算机后台运行的进程的快捷方式,例如病毒防护程序或音量控制。 这些进程不附带自己的用户界面。 该 NotifyIcon 类提供了一种在此功能中编程的方法。 该 Icon 属性定义显示在通知区域中的图标。 图标的弹出菜单使用 ContextMenu 属性进行寻址。 该 Text 属性分配工具提示文本。 为了使图标显示在通知区域中, Visible 属性必须设置为 true。
ContexMenuStrip控件
命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll
表示快捷菜单
ContextMenuStrip 替换了 ContextMenu。 可以将 a ContextMenuStrip 与任何控件相关联,右键单击会自动显示快捷菜单。 可以使用 Show 方法以编程方式显示 ContextMenuStrip。 ContextMenuStrip 支持可取消的 Opening 和 Closing 事件来处理动态填充和多单击情形。 ContextMenuStrip 支持图像、菜单项检查状态、文本、访问键、快捷方式和级联菜单。
SizeChanged
每当控件的大小发生更改时,调用与控件事件关联的 SizeChanged 事件处理程序。. 此事件处理程序显示一个消息框,指示控件的大小已更改。
windowState
命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll
获取或设置一个值,该值指示窗体是最小化(Minimized)、最大化(Maximized)还是正常(Normal)。
DialogResult类
命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll
指定标识符以指示对话框的返回值。
属性 | 枚举值 | 说明 |
---|---|---|
Abort | 3 |
对话框的返回值是 Abort (通常从标签为“中止”的按钮发送)。
|
Cancel | 2 |
对话框的返回值是 Cancel (通常从标签为“取消”的按钮发送)。
|
Continue | 11 | 对话框返回值是“继续” (通常从标记为“继续”) 的按钮发送。 |
Ignore | 5 |
对话框的返回值是 Ignore (通常从标签为“忽略”的按钮发送)。
|
No | 7 |
对话框的返回值是 No (通常从标签为“否”的按钮发送)。
|
None | 0 |
从对话框返回了 Nothing 。 这表明有模式对话框继续运行。
|
OK | 1 |
对话框的返回值是 OK (通常从标签为“确定”的按钮发送)。
|
Retry | 4 |
对话框的返回值是 Retry (通常从标签为“重试”的按钮发送)。
|
TryAgain | 10 | 对话框返回值是“重试” (通常从标记为“重试”的按钮发送) 。 |
Yes | 6 |
对话框的返回值是 Yes (通常从标签为“是”的按钮发送)。
|
public void DialogResultFuc()
{string message = "今天你摸鱼了吗";string caption = "热爱工作,热爱生活";MessageBoxButton buttons = MessageBoxButton.YesNo;DialogResult result;result = Message.Show(this,message,caption,buttons);if(result == DialogResult.Yes){this.Close();}}
Application类
命名空间:System.Windows
程序集:PresentationFramework.dll
封装 Windows Presentation Foundation 应用程序。
Application 是封装 WPF 应用程序特定功能的类,包括:
应用程序生存期:Activated、、Current、、RunSessionEndingDeactivatedExitShutdownDispatcherUnhandledException、。 StartupShutdownMode
应用程序范围窗口、属性和资源管理:FindResource、、GetContentStream、、GetResourceStream、LoadComponent、MainWindowProperties、Resources、StartupUri。 Windows
命令行参数和退出代码处理:Application.Startup、、Application.ExitApplication.Shutdown。
导航:FragmentNavigation、、LoadCompleted、Navigated、NavigationProgressNavigating、NavigationStoppedNavigationFailed、、SetCookie。 GetCookie
MessageBoxButton
命名空间:System.Windows
程序集:PresentationFramework.dll
指定显示在消息框上的按钮。 用作 Show 方法的参数。
字段 | 枚举值 | 说明 |
---|---|---|
OK | 0 | 消息框显示“确定”按钮。 |
OKCancel | 1 | 消息框显示“确定”和“取消”按钮。 |
YesNo | 4 | 消息框显示“是”和“否”按钮。 |
YesNoCancel | 3 | 消息框显示“是”、“否”和“取消”按钮。 |
实现步骤
画面组态
添加控件notificon。
将notiicon控件属性中contextMenuStrip修改为ContentMenuStrip控件的Name属性值。
在属性值ICon修改自己相应的图标,格式为.icon
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTkzAMs4-1658760546997)(C:\Users\buluw\AppData\Roaming\Typora\typora-user-images\image-20220725223503629.png)]
添加控件ContentMeunStrip控件
修改控件的属性集合值,增加退出和主界面显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2XVynZqo-1658760546998)(C:\Users\buluw\AppData\Roaming\Typora\typora-user-images\image-20220725223827677.png)]
代码编写
根据窗体不同变化,修改notiicon的可见性
根据notificon事件,窗体变化
操作快捷菜单事件,窗体随之变化
private void Form1_SizeChanged(object sender, EventArgs e){if (this.WindowState == FormWindowState.Normal){notifyIcon1.Visible = false;}else if (this.WindowState == FormWindowState.Minimized){this.Hide();notifyIcon1.Visible = true;}}private void notifyIcon1_DoubleClick(object sender, EventArgs e){this.Show();this.WindowState = FormWindowState.Normal;}private void 主界面显示ToolStripMenuItem_Click(object sender, EventArgs e){notifyIcon1_DoubleClick(null, null);}private void 退出ToolStripMenuItem_Click(object sender, EventArgs e){DialogResult result = MessageBox.Show("确定退出吗?", "退出",MessageBoxButtons.OKCancel, MessageBoxIcon.Question);if (result == DialogResult.OK)Application.ExitThread();elsethis.WindowState = FormWindowState.Minimized;}
C#系统托盘功能实现相关推荐
- 采用QSystemTrayIcon实现系统托盘功能
在应用程序关闭的时候最小化到系统托盘,想必大家都见过这个功能.如何用QSystemTrayIcon实现系统托盘功能呢?QT的源码里面有详细的例子,但是代码比较繁琐.我根据自己的经验将主要实现过程作简化 ...
- VC++实现系统托盘功能(附源码)
VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) Windows桌面的系统托盘位于任务栏的右侧,即Windows桌面的右下方,它常用来显示一些系统的状态.如系统时间,音量控制以及其他的 ...
- qt修改程序图标名称_解决Qt应用程序添加icon图标,修改窗口图标以及添加系统托盘问题...
一.Qt应用程序添加icon图标的方法: 首先,我们需要先准备两个文件,一个是icon图标,另一个是rc文件,我分别命名为"myApp.rc"和"soft.ico&quo ...
- Delphi 7下最小化到系统托盘
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在Del ...
- 将Windows Live Mail最小化到Windows 7中的系统托盘
Are you frustrated that you can not minimize Windows Live Mail to the system tray in Windows 7? With ...
- 半小时玩转QT桌面系统托盘(含托盘消息)
桌面托盘是常用的功能,对于QT,为桌面托盘提供了很多接口可以使用,满足开发中遇到的托盘相关的功能. 以下文章介绍QT的桌面系统托盘功能的开发实例. 系统托盘:用户在最小化程序的时候并没有真正关闭程序, ...
- MFC系统托盘的实现
通常电脑里边的软件,当你打开后会在电脑最右下角的任务栏上生成一个系统托盘,当你点击最小化或者点击关闭按钮后,若想恢复窗口,可以左键双击或者单机这个系统图标,同时鼠标右键点击,又会有其他的菜单弹出,比如 ...
- 刷新系统托盘(清除死掉的图标)修正版
刷新系统托盘(清除死掉的图标)修正版 2009-08-06 18:50:06| 分类: Delphi | 标签: |字号大中小 订阅 type TOSVersion = (osUnknown, ...
- 服务程序增加系统托盘
服务程序增加系统托盘 用Delphi创建服务程序作者:未知 文章来源:岁月联盟 Windows 2000/XP和2003等支持一种叫做"服务程序"的东西.程序作为服务启动有以下几个 ...
最新文章
- 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠
- POJ - 3476 A Game with Colored Balls---优先队列+链表(用数组模拟)
- FD.io/VPP — VPP 的实现原理解析
- nginx 转发_除了转发和负载均衡,nginx又一次让他玩出新高度
- 如何监视SQL Server索引的总大小
- 使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传...
- Microsoft SQL Server 2008 R2官方中文版(SQL2008下载).rar
- C#常用 API函数大全
- 深度理解Powell优化算法
- SparkSQL Analyzed实例源码解析
- 为什么10M、20M的宽带只有大约1、2M的下载速度——网速KB/s与Kbps(Kb/s)的区别
- python画正方形-用python画一个正方形
- 剑指Offer对答如流系列 - 把数字翻译成字符串
- 生活当中调整时钟时间背后发生的事情
- 2020年千兆路由器推荐 数码宅男来带路 赶紧M
- Win10安装打印机驱动搜索不到打印机
- android 显示进度,progressdialog-如何在Android中显示进度对话框?
- 射频基础——射频同轴线缆介绍
- Python 异步库 asyncio、aiohttp
- 好久都没去过电影院了!用Python网络爬虫来看看最近电影院都有哪些上映的电影