浅谈c#实现隐藏任务栏图标的Windows托盘程序
来源:互联网 发布:金融信息基础数据库 编辑:程序博客网 时间:2024/05/01 10:09
在网上看了许多人问怎么样实现在WINDOWS托盘程序中,当点击最小化时将窗体隐藏在任务栏中,而点击托盘栏中的程序托盘时又会显示出窗体的正常状态的功能。许多人的思路是找到最小化时触发的事件或者是程序最小化时执行的方法,可是怎么也找不到。其实实现这种功能很简单,只不过许多人的思路一直停留在找到最小化的方法体上了,以为只要在此方法体中再加上一些语句就可以实现,可是怎么也找不到,于是就卡在这里了。其实实现这种功能很简单,可以通过以下方法实现:
1.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。
2.添加窗体最小化事件(在这里实现隐藏任务栏图标,有两种方法):
方法一:
// this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);
//上面一行是主窗体InitializeComponent()方法中需要添加的引用
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState==FormWindowState.Minimized)
{
this.Hide();或者是this.Visible = false;
this.notifyIcon1.Visible=true;
}
}
{
if (this.WindowState==FormWindowState.Minimized)
{
this.Hide();或者是this.Visible = false;
this.notifyIcon1.Visible=true;
}
}
方法二:
this.Resize += new System.EventHandler(this.Form1_Resize);
//上面一行是主窗体InitializeComponent()方法中需要添加的引用
private void Form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
this.Visible = false;
}
3.添加点击图标事件(实现点击左键显示主窗体正常状态):
private void notifyIcon1_Click(object sender, EventArgs e)
{
this.Visible = true;
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
}
4.可以给notifyIcon添加右键菜单:
主窗体中拖入一个ContextMenu控件contextMenu1,点中控件,在上下文菜单中添加菜单,notifyIcon1的ContextMenu行为中选中contextMenu1作为上下文菜单。(可以在子菜单中添加行为)……
在这里主要谈谈在第二步中的两种方法。
这里使用的是两种最常规,也是最常用的办法。第一种的SizeChanged()事件,其本意是当控件上的Size属性更改时引发的事件。而第二种方法Resize()事件,是在调整控件大小时引发的事件。可在这里为什么都可以实现同样的功能?可以做一下实验看看两个事件到底是什么时候发生的。
private void Form1_SizeChanged(object sender, EventArgs e)
{
MessageBox.Show("sizechange即将发生");
if (this.WindowState == FormWindowState.Minimized)
this.Visible = true;
}
private void Form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
this.Visible = false;
MessageBox.Show("resize发生了");
}
private void notifyIcon1_Click(object sender, EventArgs e)
{
this.Visible = true;
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
}
将这些代码都加在同一个程序中,编译执行可以看到。当我们手工的扩大或缩小我们的窗体大小时,会弹出消息框"resize发生了",接着就会弹出消息框"sizechange即将发生"。从这个小例子可以看出这两个事件其实是大同小异的,只不过Resize先执行而SizeChanged后执行罢了。从这两个事件的MSDN解释上我们也不难看出,当我们改变控件大小,这时候必先触发Resize()(在调整控件大小时引发的事件),而我们改变了大小也必然会导致Size属性的改变,这时又会触发SizeChanged事件。这个先后道理我想不难理解。所以说这两个事件是乎有着某种必然的联系!
最小化(最大化)其实和我们手工改变窗体的大小是一个道理。而之所以能用两种方法得到相同的效果的道理也正是如以上所述,当然就可以达到异曲同工之妙!
- 浅谈c#实现隐藏任务栏图标的Windows托盘程序
- 浅谈c#实现隐藏任务栏图标的Windows托盘程序
- MFC程序任务栏托盘图标的实现
- 隐藏程序的任务栏图标
- [转贴]C#编写隐藏在任务栏图标的Windows应用程序
- 解决Java程序的托盘图标在Windows任务栏重建后丢失的问题(使用SystemTray类创建托盘图标)
- C# 实现任务栏图标程序
- C# 实现任务栏图标程序
- C# 实现任务栏图标程序
- 任务栏程序图标与托盘图标的移动
- QT 实现一个任务栏托盘图标程序 weathertrayicon
- 隐藏指定程序托盘图标的方法
- 隐藏指定程序托盘图标的方法
- delphi 隐藏指定程序的托盘图标
- 在windows系统任务栏的托盘中显示图标 c++
- 隐藏程序在任务栏的图标
- 隐藏任务栏的开始菜单、托盘
- Qt实现任务栏中的托盘图标的功能.
- 超级文件夹加密软件加密后的解密问题
- 位运算方法将正整型数据转换为二级制
- listView中获取选定项
- 在vb6中检测Internet是否连接
- Digging into Google Notebook javascript http://blogs.zdnet.com/Google/?p=193
- 浅谈c#实现隐藏任务栏图标的Windows托盘程序
- Symbian屏幕双缓冲和DSA
- 几个java的常见问题
- sql创建自定义数据类型
- 线程和多线程之创建线程二种方法
- 有关计算机的杂想
- Java开发者需坚守的基本原则
- Eclipse3.2及其语言包的安装方法
- JAVA自定义标签教程及实例代码