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程序添加启动画面
如果程序在装载时需要进行较长时间的处理,最好使用启动画面,一方面美化程序,一方面可以不使用户面对着一片空白的程序界面. 我手头上一个小项目主界面启动时需要检查用户文件及运行环境是否有效,需要一段时间处 ...
随机推荐
- android 常用第三方包的代码混淆
首先在:project.properties 文件下,启动代码混淆 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:pro ...
- Interleaving String leetcode java
题目: Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given ...
- 【wikioi】1904 最小路径覆盖问题(最大流+坑人的题+最小路径覆盖)
http://wikioi.com/problem/1904/ 这题没看数据的话是一个大坑(我已报告官方修复了),答案只要求数量,不用打印路径...orz 最小路径覆盖=n-最大匹配,这个我在说二分图 ...
- Python小例子
import urllib.request as request import urllib.parse as parse import string print(""" ...
- Java中替换HTML标签的方法代码
这篇文章主要介绍了Java中替换HTML标签的方法代码,需要的朋友可以参考下 replaceAll("\\&[a-zA-Z]{0,9};", "").r ...
- CentoS 下安装gitlab
curl https://raw.github.com/mattias-ohlsson/gitlab-installer/master/gitlab-install-el6.sh | bash 报错 ...
- 连接access的语句
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- SQL - 语法收集
随机数 select cast(floor(rand()*10000) as int) GUID select newid() 判断两个日期是否为同一天 DATEDIFF(DAY,QsDate,'20 ...
- 【转】JavaScript顶级对象参考模型
- uploadify 3.2 后台动态传参数
最近在弄一个上传的小功能,需要往后台传递一些动态参数,网上有一些传参数可能是因为版本不对也没成功.仔细看了官网的一些说明,搞定了. 3.2中传递参数用的的是'formData':{'somekey': ...