C#一行代码实现(01)最小化到通知区域
主要功能
- 实现
Winform程序最小化后,隐藏任务栏显示,在通知区域显示。左键点击通知区域图标,可以弹出菜单,包含开机启动和退出程序,可以根据需求进行定制。
一行代码
private void Form1_Load(object sender, EventArgs e)
{
this.ExAddNotifyIcon();
}
代码封装
- 该方法已封装在通用类库
Sayaka.Common - NuGet网址:https://www.nuget.org/packages/Sayaka.Common/
/// <summary>
/// 添加通知图标,左键点击切换窗口显示,右键点击弹出菜单
/// </summary>
/// <param name="form"></param>
/// <param name="tipText"></param>
/// <param name="timeout"></param>
/// <param name="tipIcon"></param>
/// <returns></returns>
public static NotifyIcon ExAddNotifyIcon(this Form form, string tipText = "程序最小化至后台运行,点击图标显示程序", int timeout = 3000, ToolTipIcon tipIcon = ToolTipIcon.Info)
{
NotifyIcon notifyIcon = new NotifyIcon();
notifyIcon.Icon = form.Icon;
notifyIcon.Visible = true;
notifyIcon.Text = form.Text;
notifyIcon.BalloonTipText = form.Text;
notifyIcon.MouseClick += (sender, args) =>
{
if (args.Button == MouseButtons.Left)
{
if (!form.Visible)
{
form.Show();
form.WindowState = FormWindowState.Normal;
form.TopMost = true;
form.TopMost = false;
}
else
{
form.WindowState = FormWindowState.Minimized;
form.Hide();
}
}
};
notifyIcon.ContextMenu = new ContextMenu(new MenuItem[]
{
new MenuItem("开机启动", (sender, args) => { ((MenuItem) sender).Checked = form.ExSwitchRunOnSystemStart(); })
{
Checked = form.ExIsRunOnSystemStart()
},
new MenuItem("退出程序", (sender, args) => { form.Close(); }),
});
form.SizeChanged += (sender, args) =>
{
if (form.WindowState == FormWindowState.Minimized)
{
form.Hide();
notifyIcon.ShowBalloonTip(timeout, form.Text, tipText, tipIcon);
}
};
form.FormClosed += (sender, args) => { notifyIcon.Dispose(); };
return notifyIcon;
}
声明
- 文章作者:易几施
- 博客地址:https://www.cnblogs.com/easynetwork/
- 版权声明:文章遵循创作共用版权协议,署名、非商业、保持一致,转载请注明出处。
C#一行代码实现(01)最小化到通知区域的更多相关文章
- delphi代码实现窗口最小化,最大化,关闭消息发送
分类: 代码实现窗口最小化,最大化,关闭 var hwnd: hwnd;//句柄 PostMessage(hwnd,WM_SYSCOMMAND, SC_MINIMIZE,0); //最小化Post ...
- C# 无边框窗体的最小化问题
WinForm在窗体风格设置成None时无法最小化的问题.添加以下代码即可实现最小化: protected override CreateParams CreateParams { get { con ...
- C# 实现WinForm窗口最小化到系统托盘代码,并且判断左右鼠标的事件
1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小 ...
- C# 实现WinForm窗口最小化到系统托盘代码
1.如果不想让程序在任务栏中显示,请把窗体的属性ShowInTaskbar设置为false; 2.如果想让程序启动时就最小化,请设置窗体的属性WindowState设置为Minimized.(Mini ...
- WinForm窗体的托盘最小化实现代码
//窗体最小化时候将窗体隐藏掉,同时让托盘控件显示 private void Form1_SizeChanged(object sender, EventArgs e) { if(this.Windo ...
- 最小化JavaScript代码
1.去除不必要的格式符.空白符.凝视符. 这个操作.事实上能够理解为是一种格式化.尽管它操作的结果事实上是去除掉原始文件的那些格式. 2.模糊(Obfuscation)处理JAVASCRIP脚本源码. ...
- 实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑
简介 以前写过一个补丁更新的文章,此处会做一个更精简的最小化实现,以便于集成.为了使逻辑具有通用性,将剥离对AFNetworking和ReativeCocoa的依赖.原来的文章,可以先看这里: htt ...
- 一行代码设置TForm颜色的前世今生(属性赋值引起函数调用,然后发消息实现改变显示效果),TForm的初始颜色在dfm中设置了clBtnFace色
来自万一的帖子:http://www.cnblogs.com/del/archive/2008/04/27/1173658.html的确做到了一行代码设置TForm控件的颜色(一点感想:Delphi程 ...
- 最小化安装Linux记录
挂载点: /boot 挂载点 100M swap 交换分区 / 根分区 最小化安装: 基本--基本.兼容库.调试工具 开发--开发工具 修改hostname 永久设置:/etc/sysconfig/ ...
随机推荐
- openstack核心组件——keystone身份认证部署服务(5)
node1主机执行 1.mysql -u root -p 2.create database keystone; 创建数据库 MariaDB [(none)]> show databases; ...
- IHttpClientFactory组件使用
起因 :由于需要前段时间写了一个http请求的公共方法 使用的 HttpClient,但是在jmeter测试下 爆发了这个问题:“Cannot assign requested address Ca ...
- [LCTF]bestphp's revenge 给我的启发学习
bestphp's revenge flag.php: only localhost can get flag!sessionstart(); echo 'only localhost can get ...
- python语言开发环境配置
原作者:龙行天下-super 地址:https://www.cnblogs.com/longxingtianxia/p/10181901.html 要点:IDLE是一个轻量级python语言开发环境, ...
- day59:Linux:编辑工具vim&文件类型&文件属性
目录 1.Linux编辑工具vim 2.Linux文件类型 3.Linux文件属性 4.今日份Linux练习题 Linux编辑工具vim 1.什么是vim 文本文件的编辑工具, 和windows的n ...
- flutter json_annotation和json_serializable处理json数据序列化
flutter json_annotation和json_serializable处理json数据序列化 导包 dependencies: json_annotation: ^2.4.0 dev_de ...
- 剑指offer-链表&数组
1.圆圈中最后剩下的数 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈. ...
- [POI2009]ARC-Architects
[POI2009]ARC-Architects 题意: 给定一个序列,从中挑选k个数,满足下标单调递增,并且字典序最小: 思路: 由于字典序最小,所以考虑贪心,即前面的数尽可能大,所以用单调队列维护最 ...
- Linux 安装Navicat Premium 15
参考:https://gitee.com/andisolo/navicat-keygen 安装 aptitude 管理软件 $ sudo apt-get install aptitude 安装Navi ...
- CentOS 7安装docker和常用指令
1.安装 yum -y install docker 2.启动 systemctl start docker // 启动 docker -v //查看版本号 systemctl stop docker ...