张玉丰
一个程序员的破笔记本。。。
随笔 - 382 文章 - 14 评论 - 509
博客园
首页
新随笔
联系
管理
订阅
托盘程序的主要步骤及解决方法
一个专门用来开发托盘程序的组件--NotifyIcon组件。下面就来介绍一下这个组件的具体用法和程序设计中的主要的技巧。
(1).如何在程序运行后隐藏窗体:
我们知道托盘程序运行后是无法看见主窗体的,他只会显示在工具栏上。在用Visual C#设计此类程序的时候,可以用二种方法使得程序运行后不显示主窗体。其中一种方法是重载主窗体中的OnActivated( )事件,OnActivated( )事件是在窗体激活的时候才触发的。通过重载此事件可以达到隐藏主窗体的目的。具体程序代码如下:
protected override void OnActivated ( EventArgs e )
{
this.Hide ( ) ;
}
另外一种方法是在初始化主窗体的时候完成的,通过设定主窗体的属性来达到不显示的目的。具体的程序代码如下:
this.MaximizeBox = false ;
this.MinimizeBox = false ;
this.WindowState = System.Windows.Forms.FormWindowState.Minimized ;
在本文介绍的程序中,使用了第二种方法。
(2).如何为托盘程序设定显示图标:
在NotifyIcon组件中有一个属性icon就是来设定托盘图标的,由于Visual C#是一个完全的OOP (面向对象)语言,在Visual C#中任何东西都可以作为对象来处理。当然对应一个icon来说,也可以用对象的方法来处理他。我们通过下列语句来得到一个icon对象:
private Icon mNetTrayIcon = new Icon ( "Tray.ico" ) ;
请注意:在编译好的程序中,必须要在同一个目录中有一个Tray.ico图标文件,否则程序运行时候会出错的。
通过下列语句把此icon对象付给NotifyIcon组件中的icon属性,此时如果程序正确编译,则此icon就会显示在工具栏中了。
TrayIcon.Icon = mNetTrayIcon ;
(3).设定当鼠标停留在托盘程序上显示的文本内容:
NotifyIcon组件中有一个属性Text。设定这个属性的内容,就是鼠标停留在托盘图标上显示的内容了。具体语句如下:
TrayIcon.Text = "用Visual C#做托盘程序" + "n" + "作者:马金虎于2001.12.08" ;
(4).如何在托盘程序加入菜单:
在NotifyIcon组件中有一个对象叫ContextMenu,在托盘程序中显示出的菜单就是通过设定此对象来实现的。以下的程序代码是为托盘程序加入菜单项:
notifyiconMnu = new ContextMenu ( mnuItms ) ;
TrayIcon.ContextMenu = notifyiconMnu ;
//为托盘程序设定菜单
(5).如何设定ContextMenu对象的内容:
ContextMenu对象是托盘程序的菜单的结构,所以如何设定此对象,在本程序中是比较关键的。在程序中,是通过定义一个菜单项数组,并对这个数组设定不同的值(这当中包括菜单的一些属性和事件),然后把这个数组同时赋值给ContextMenu对象,来实现对ContextMenu对象的设置过程的。以下是程序中具体代码:
//定义一个MenuItem数组,并把此数组同时赋值给ContextMenu对象
MenuItem [ ] mnuItms = new MenuItem [ 3 ] ;
mnuItms [ 0 ] = new MenuItem ( ) ;
mnuItms [ 0 ] .Text = "用Visual C#做托盘程序!" ;
mnuItms [ 0 ] .Click += new System.EventHandler ( this.showmessage ) ;
mnuItms [ 1 ] = new MenuItem ( "-" ) ;
mnuItms [ 2 ] = new MenuItem ( ) ;
mnuItms [ 2 ] .Text = "退出系统" ;
mnuItms [ 2 ] .Click += new System.EventHandler ( this.ExitSelect ) ;
mnuItms [ 2 ] .DefaultItem = true ;
notifyiconMnu = new ContextMenu ( mnuItms ) ;
TrayIcon.ContextMenu = notifyiconMnu ;
//为托盘程序加入设定好的ContextMenu对象
当成功加入了ContextMenu对象后,在程序编译完成运行时,当鼠标右键点击托盘图标,程序会自动弹出ContextMenu对象封装好的菜单。
二. 本文介绍的程序源代码( Tray.cs ):
Tray.cs源程序代码:
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
//导入在程序中使用到的名称空间
public class Tray : Form
{
private System.ComponentModel.Container components = null ;
private Icon mNetTrayIcon = new Icon ( "Tray.ico" ) ;
private NotifyIcon TrayIcon ;
private ContextMenu notifyiconMnu ;
public Tray()
{
//初始化窗体中使用到的组件
InitializeComponent ( ) ;
//初始化托盘程序的各个要素
Initializenotifyicon ( ) ;
}
private void Initializenotifyicon ( )
{
//设定托盘程序的各个属性
TrayIcon = new NotifyIcon ( ) ;
TrayIcon.Icon = mNetTrayIcon ;
TrayIcon.Text = "用Visual C#做托盘程序" + "n" + "作者:马金虎于2001.12.08" ;
TrayIcon.Visible = true ;
TrayIcon.Click += new System.EventHandler ( this.click ) ;
//定义一个MenuItem数组,并把此数组同时赋值给ContextMenu对象
MenuItem [ ] mnuItms = new MenuItem [ 3 ] ;
mnuItms [ 0 ] = new MenuItem ( ) ;
mnuItms [ 0 ] .Text = "用Visual C#做托盘程序!" ;
mnuItms [ 0 ] .Click += new System.EventHandler ( this.showmessage ) ;
mnuItms [ 1 ] = new MenuItem ( "-" ) ;
mnuItms [ 2 ] = new MenuItem ( ) ;
mnuItms [ 2 ] .Text = "退出系统" ;
mnuItms [ 2 ] .Click += new System.EventHandler ( this.ExitSelect ) ;
mnuItms [ 2 ] .DefaultItem = true ;
notifyiconMnu = new ContextMenu ( mnuItms ) ;
TrayIcon.ContextMenu = notifyiconMnu ;
//为托盘程序加入设定好的ContextMenu对象
}
public void click ( object sender , System.EventArgs e )
{
MessageBox.Show ( "Visual C#编写托盘程序中的事件响应" ) ;
}
public void showmessage ( object sender , System.EventArgs e )
{
MessageBox.Show ( "你点击了菜单的第一个选项" ) ;
}
public void ExitSelect ( object sender , System.EventArgs e )
{
//隐藏托盘程序中的图标
TrayIcon.Visible = false ;
//关闭系统
this.Close ( ) ;
}
//清除程序中使用过的资源
public override void Dispose ( )
{
base.Dispose ( ) ;
if ( components != null )
components.Dispose ( ) ;
}
private void InitializeComponent ( )
{
this.SuspendLayout ( ) ;
this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;
this.ClientSize = new System.Drawing.Size ( 320 , 56 ) ;
this.ControlBox = false ;
this.MaximizeBox = false ;
this.MinimizeBox = false ;
this.WindowState = System.Windows.Forms.FormWindowState.Minimized ;
this.Name = "tray" ;
this.ShowInTaskbar = false ;
this.Text = "用Visual C#做托盘程序!" ;
this.ResumeLayout ( false ) ;
}
static void Main ( )
{
Application.Run ( new Tray ( ) ) ;
}
}
三. 总结:
通过以上介绍,可以看出用Visual C#做一个托盘程序并不是一件复杂的事情,而是一件比较轻松的事情。同样也可使我们明白,Visual C#虽然是一种功能强大的程序设计语言,但它只是一个打开.Net FrameWork SDK的钥匙,正是这个内容丰富的软件包,才使得各个.Net程序开发语言有了施展自身功能更广阔的舞台。
posted on 2007-07-19 01:07
玉米丰收
阅读(84)
评论(0)
编辑
收藏
网摘
图书专题
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
人才
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
Google站内搜索
[推荐职位]上海盛大网络招聘架构师
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》
相关文章:
相关链接:
最新IT新闻:
Google浏览器Chrome 2.0测试版发布
微软中国被指变相裁员 微软称确有过人事调整
“新一代互联网”研究:中国走在世界前列
苏宁首战告捷 销售同比增六成
福布斯:虚拟化技术登陆Mac平台
公告
Data structure and Algorithm。。。
许多转载文章是收藏方便自己学习的,如果引起作者不快请告知,谢谢。
与我联系
发短消息
搜索
留言簿
(13)
给我留言
查看留言
我参加的小组
读书(Books)
程序员音乐空间
设计模式
AJAX
.Net+MySQL
CSS美化组
Community Server
数据库
我参与的团队
数据库团队(0/348)
HiccDS俱乐部(0/844)
随笔分类
(259)
×C语言× (4)
×JAVA×(17)
×Linux×(51)
×MySQL×(9)
×PHP×(5)
×SSH×(6)
×Web应用×(4)
×成长脚印×(31)
×大道至简-算法×(2)
×关于博客×(3)
×设计模式×(5)
×心情故事×(32)
×杂七杂八×(5)
×照片故事×(7)
FMS流媒体(9)
Linux-Fedora Core(21)
Linux-SuSe(5)
Linux-ubuntu(4)
MacOsTiger(5)
PHP+Apache+mysql(9)
收藏柜(25)
随笔档案
(376)
2009年1月 (1)
2008年12月 (6)
2008年10月 (5)
2008年9月 (4)
2008年8月 (14)
2008年7月 (11)
2008年6月 (13)
2008年5月 (17)
2008年4月 (33)
2008年3月 (38)
2008年2月 (73)
2008年1月 (34)
2007年12月 (12)
2007年11月 (20)
2007年10月 (16)
2007年9月 (40)
2007年8月 (1)
2007年7月 (17)
2007年6月 (13)
2007年5月 (6)
2007年4月 (2)
最新随笔
1. 转:JavaScript语言中的Literal Syntax特性
2. c语言-简单学生信息管理(内存链表练习)
3. C语言中的堆管理(内存管理)
4. linux发行版的安装体会
5. 达芬奇睡眠法
6. linux在终端模式显示进度
7. Linux下C语言编程基础(Makefile)
8. java 排序算法四例
9. 算法学习的轨迹
10. SQL语句的挑战
11. 我编程的大学生活
12. windows下的netsta——查看端口占用
13. linux下压缩解压-最简最帅教程
14. 装错MacOS驱动遇四国,简单步骤告别重装
15. NVIDIA显卡驱动标准安装方法!
16. NVIDIA显卡驱动标准安装方法!
17. Zend Studio For Eclipse 6.0 注册码
18. 如何使用OpenSSL创建证书
19. (转)可替换系统(alternatives system)的应用浅议
20. Mac OSX 10.4.8下AC97声卡的完美安装
21. Mac OSX 10.4.8 tiger 下BCM5788网卡的完美安装
22. 方向盘开极品飞车9很Hapyy
23. 静静中的悸动.
24. linux (fc8) 下的IE
25. Linux (FC8)下玩魔兽3(warcraft)及其他游戏
26. FC8 中的一些自己认为比较实际的经验(日常使用)
27. Fedora再次安装手记--很爽的Wine工具
28. Fedora再次安装手记--很爽的YUM工具
29. fedora8编译安装wine
30. Fedora下登录windown系统远程桌面(3389)
31. 流泪的苹果....
32. IE6 IE7 FifeFox 的CSS兼容性问题
33. 宠辱不惊,去留无意
34. 从狭隘到自我设限,再到自我解放.
35. Linux系统信息查看命令大全
36. Linux下Apache2+php5服务器的安装和设置(仅作参考)
37. linux下编译安装php的参数
38. 最近写的一个Mysql存储过程
39. 做饭记
40. 如果不是心中还有梦,又能忍住多少痛?
Google搜索
60天内阅读排行
1. c语言-简单学生信息管理(内存链表练习)(66)
2. 达芬奇睡眠法(62)
3. C语言中的堆管理(内存管理)(38)
4. linux发行版的安装体会(33)
5. linux在终端模式显示进度(33)