C# winForm程序开机启动和托盘显示 (转http://blog.csdn.net/xinyue3054/article/details/6599508)
这段时间一直进行cs项目,故整理下开机自动运行、托盘、显示、隐藏。
(1)、在窗口上点击关闭按钮或者最小化时将托盘显示;
(2)、双击托盘图标显示窗口;
(3)、右键点击托盘图标提供三个菜单选项,“退出”、“隐藏”、“显示”;
(4)、程序可以设置开机启动,隐藏任务栏显示。就这四个小功能。
1、建一个WinForm程序—FormAuto,将其属性ShowInTaskbar改为false,这样程序将不会在任务栏中显示;将MaximizeBox属性设置为false,屏蔽掉最大化按钮;把StartPosition属性改为CerternScreen,这样程序运行后,窗口将会居中显示。
2、在工具栏中的公共控件里,拖入NotifyIcon控件—notifyIconAutoRun,这个是程序运行任务栏右侧通知区域图标显示控件。
3、在工具栏中的菜单和工具栏里,拖入ContextMenuStrip—contextMenuStripAuto,这个控件是右击时关联菜单。
4、右键testNotifyIcon选择属性,将其属性ContextMenuStrip改加为contextMenuStripAuto,这个时候1和2两个步骤的两个控件就关联了,用于完成上面(3)功能。
5、右键contextMenuStripAuto选择属性,进入Items,然后点击“添加”,这里添加三个菜单选项:exitMenuItem、hideMenuItem、showMenuItem,同时分别将其Text属性改为:退出、隐藏和显示。
准备工作就这些,下面是大致代码:
1)双击FormAuto,即添加Load事件然后
private void FormAuto_Load(object sender, EventArgs e)
{
//无法在Load事件隐藏窗体
//Closed事件已经释放
//唯独Closing事件中可以做到
try
{
//程序运行位置
string R_startPath = Application.ExecutablePath;
//对应于HKEY_LOCAL_MACHINE主键
RegistryKey R_local = Registry.LocalMachine;
//开机自动运行
RegistryKey R_run = R_local.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
R_run.SetValue("MyAuto", R_startPath);
R_run.Close();
R_local.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
MessageBox.Show("开机自动运行!");
}
2)添加Form_Closing,SizeChanged事件
private void FormAuto_FormClosing(object sender, FormClosingEventArgs e)
{
//取消关闭逻辑
e.Cancel = true;
this.Hide();
}
private void FormAuto_SizeChanged(object sender, EventArgs e)
{
//最小化处理
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide();
//不在任务栏显示窗体
this.ShowInTaskbar = false;
}
}
3)给notifyIconAutoRun添加MouseDoubleClick事件
private void notifyIconAutoRun_MouseDoubleClick(object sender, MouseEventArgs e)
{
//双击显示
if (e.Button == MouseButtons.Left)
{
this.Show();
this.WindowState = FormWindowState.Normal;
this.Activate();
}
}
4)、进入FormAuto单击contextMenuStripAuto,然后可以看到“退出”、“隐藏”、“显示”,分别双击,添加相应的事件
private void exitMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("你确定要退出终端服务程序吗?", "确认", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
notifyIconAutoRun.Visible = false;
this.Close();
this.Dispose();
Application.Exit();
}
}
private void showMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
}
private void hideMenuItem_Click(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
this.Activate();
}
C# winForm程序开机启动和托盘显示 (转http://blog.csdn.net/xinyue3054/article/details/6599508)的更多相关文章
- 程序员的沟通之痛https://blog.csdn.net/qq_35230695/article/details/80283720
个人理解: 一般刚工作的程序员总觉得技术最重要.但是当工作年限超过3年.或者岗位需要涉及汇报.需求对接等就会发现沟通非常重要.也许在大公司还不那么明显,但是在小公司.小团队或者创业,沟通甚至可以说是第 ...
- winform程序开机启动时的运行目录
并不是程序的当前路径,而是系统的某个目录 如环境是win10 64位,路径是 c:\winfows\SysWOW64\ConfigInfor.json
- 微信小程序真机预览跟本地不同的问题。原文地址:https://blog.csdn.net/qq_27187991/article/details/69664247/
微信小程序中出现最多的一个问题,就是真机跟本地不同:我简单列举一些我发现的原因,给大家参考,大家也可以把自己发现的东西回复给我,给我参考: 本地看不到数据,就先让本地能看到数据,再看本帖....特别提 ...
- Jquery 实现密码框的显示与隐藏【转载自http://blog.csdn.net/fengzhishangsky/article/details/11809069】
<html> <head> <script type="text/JavaScript" src="jQuery-1.5.1.min.j ...
- 关于springmvc 返回json数据null字段的显示问题-转https://blog.csdn.net/qq_23911069/article/details/62063450
最近做项目(ssm框架)的时候,发现从后台返回的json(fastjson)数据对应不上实体类,从数据库查询的数据,如果对应的实体类的字段没有信息的话,json数据里面就不显示,这不是我想要的结果,准 ...
- IE的F12开发人员工具不显示 转载自:http://blog.csdn.net/longyulu/article/details/8749705
IE的F12开发人员工具不显示问题: 按下F12之后,开发人员工具在桌面上看不到,但是任务栏里有显示.将鼠标放在任务栏的开发人员工具上,出现一片透明的区域,选中之后却出不来.将鼠标移动到开发人员工具的 ...
- CentOS设置程序开机启动程序/服务的方法(转)
注意:CentOS 6下基本没什么问题,CentOS 7估计不一定能行. 在CentOS系统下,主要有两种方法设置自己安装的程序开机启动. 1.把启动程序的命令添加到/etc/rc.d/rc.loca ...
- systemctl设置程序开机启动、关闭、启用/禁用服务以vsftpd为例
参考:https://blog.csdn.net/qq_29663071/article/details/80814081 systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前se ...
- C# WinForm程序添加启动画面
如果程序在装载时需要进行较长时间的处理,最好使用启动画面,一方面美化程序,一方面可以不使用户面对着一片空白的程序界面. 我手头上一个小项目主界面启动时需要检查用户文件及运行环境是否有效,需要一段时间处 ...
随机推荐
- 【TYVJ】1463 - 智商问题(二分/分块)
http://tyvj.cn/Problem_Show.aspx?id=1463 二分的话是水题啊.. 为了学分块还是来写这题吧.. 二分: #include <cstdio> #incl ...
- 【BZOJ】1507: [NOI2003]Editor(Splay)
http://www.lydsy.com/JudgeOnline/problem.php?id=1507 当练splay模板了,发现wjmzbmr的splay写得异常简介,学习了.orzzzzzzzz ...
- POJ 2486 Apple Tree(树形DP)
题目链接 树形DP很弱啊,开始看题,觉得貌似挺简单的,然后发现貌似还可以往回走...然后就不知道怎么做了... 看看了题解http://www.cnblogs.com/wuyiqi/archive/2 ...
- FireFox火狐浏览器与IE兼容问题 - 透明滤镜 DIV滚动条
问题一:最简单的鼠标移过手变型的css要改了 cursor:pointer;/*FireFox(火狐)不支持cursor:hand*/ dw8下面自动出来的也没有hand这个属性了,标准的是point ...
- fetch API
一.什么是fetch? fetch的作用类似于XMLHttpRequet的作用,用于异步请求网络,其提供的API更加的完善. fetch提供了Request和Response对象的定义,用于自定义网络 ...
- placeholder在不同浏览器下的表现及兼容方法
1.什么是placeholder? placeholder是html5新增的一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点(或 ...
- GetSystemMetrics()
GetSystemMetrics()函数的用法 可以用GetSystemMetrics函数可以获取系统分辨率,但这只是其功能之一,GetSystemMetrics函数只有一个参数,称之为「索引」,这个 ...
- Asp反向代理程序,调用远程站点全站数据,一款脚本级反向代理程序.
前些天临时写的一脚本级反向代理程序,用法很简单,设置好目标站地址,然后放到你网站根目录:index.asp,再将404页面自定义为:index.asp,即可. 由于暂时没有 url 替换需要,所以没有 ...
- HDU 1078 FatMouse and Cheese(记忆化搜索)
FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Javascript 统计复选框选中个数
var checked = document.getElementsByName("checked_c[]"); var checked_counts = 0; for(var i ...