实现将程序图标显示在系统托盘
来源:互联网 发布:淘宝优站特价专场 编辑:程序博客网 时间:2024/05/02 01:06
长久以来,一直很好奇类似QQ等软件的图标是如何显示在系统托盘的,这次有个项目正好用到,所以就研究了一下。
具体方法如下:
1、首先我们需要在工具栏找到NotifyIcon这个控件,找到后将其拖到Form中。
然后,我们需要设置其Icon属性、Text属性和Visible属性。
其中:
Icon属性是设置显示在右下角系统托盘的图标。
Text属性是设置当鼠标移动到系统托盘图标时显示的文字,一般设置为软件的名称。
Visible属性是设置小图标是否显示在系统托盘。注意:如果程序退出前没有将其设置为false,那么小图标将一直停留在系统栏,直到鼠标从上面经过时才会消失。
2、基本属性设置完之后,我们要将程序主窗体的ShowInTaskBar设置为True。这样小图标才可以显示在系统托盘中,一般,这个属性默认就是True。
3、设置完属性,我们就需要对NotifyIcon方法进行实现。
我要做的实现是当点击最小化时,让程序的图标出现在“系统托盘”的位置上,而不显示在“任务栏”中。当双击系统托盘上的图标时,还原程序窗体,再次双击时最小化到系统托盘。点击程序的关闭按钮,正常退出程序。
要实现上面的功能我们需要实现两个方法:
一个方法是主窗体的SizeChanged事件。
/// <summary> /// 最小化时到系统托盘 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainForm_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) //判断是否最小化 { this.ShowInTaskbar = false; //不显示在系统任务栏 } }
一个是NotifyIcon的双击事件。
/// <summary> /// 双击系统托盘,界面还原,再次双击,界面最小化到系统托盘 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.WindowState = FormWindowState.Maximized; //还原窗体 this.ShowInTaskbar = true; //显示在系统任务栏 } else { this.WindowState = FormWindowState.Minimized; } }
4、这样,基本的功能就实现了,但是有时候我们还想要在系统托盘上右键关闭软件,那么就需要为系统托盘上的图标添加一个右键菜单。
首先,我们需要在主窗体中拖入一个ContextMenuStrip控件,起名为ContextMenuStrip1,然后点击控件,打开其Items属性,然后添加一个MenuItem,起名为tsmiClose,并将其Text属性设置为“退出”。
然后,我们再次选中ContextMenuStrip1,在窗体上会看到这个控件,然后在我们命名的“退出”菜单上双击,编辑退出的方法。
/// <summary> /// 退出 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmiClose_Click(object sender, EventArgs e) { this.Close(); notifyIcon1.Visible = false; }
最后,我们需要将退出菜单关联到notifyIcon1的控件上,我们需要将notifyIcon1的ContextMenu属性,设置为contextMenuStrip1。
5、至此,所有的操作都完成了。
- 实现将程序图标显示在系统托盘
- 系统托盘中显示程序图标
- java程序如何实现右下角系统托盘图标显示
- wpf 让图标显示在系统托盘
- Windows系统托盘图标程序之Java实现
- Windows系统托盘图标程序之Java实现
- VC 制作系统托盘程序实现将窗口最小化到系统托盘
- MFC将程序添加到系统图标栏,系统托盘栏
- 怎样是程序显示在系统托盘中
- java程序系统托盘的托盘图标的显示
- [VB.NET]如何将图标放在系统托盘上
- java实现系统托盘图标
- c++实现系统托盘图标
- c++实现系统托盘图标
- 系统托盘图标的实现
- Delphi实现系统托盘图标
- VC实现系统托盘图标
- vC++ 系统托盘图标实现
- Learn to draw OpenGL primitives
- JavaScript可否多线程? 深入理解JavaScript定时机制
- target is null for setProperty(null, "name", [Ljava.lang.String;@696ece)
- Android学习笔记(三八):资源resource(上)、XML解析(XmlPullParser)
- 比较实用的Java基本语法
- 实现将程序图标显示在系统托盘
- 1360 神奇的液体
- MySQL更改最大连接数
- shell sed命令使用心得
- 1361 字符串匹配简单版
- HTTP GET/POST请求区别
- svn检出历史版本
- 使用定时器实现javascript的延期执行或者重复执行
- Shell的脚本编程