zoukankan
html css js c++ java
用C#编写托盘程序
所谓托盘程序顾名思义就是象托起的盘子一样的程序。而所谓的托起的盘子就是程序运行中显示出的图标,而托起的位置就是视窗系统的的工具栏了。托盘程序具有直观、占用屏幕空间较小并且可以为它定义多个功能菜单,这就给操作者带来了方便,所以越来越多的程序设计者都把程序设计成托盘这种方式。我们已经看过了用其他语言设计托盘程序的例子,其中的大部分,整个设计过程还是相对烦琐的。而对于微软公司极力推荐的下一代程序开发语言
--
Visual C#来说,却可以十分方便设计出一个托盘程序。本文就是介绍Visual C#设计托盘程序的具体过程。
首先来介绍一下本文中设计托盘程序所需要的环境:
(
1
).微软公司视窗2000服务器版
(
2
)..Net FrameWork SDK Beta
2
一. 托盘程序的主要步骤及解决方法:
为什么说用Visual C#可以十分方便的做一个托盘程序,主要的原因是在.Net框架的软件开发包( .Net FrameWork SDK )中的WinForm组件中定义了一个专门用来开发托盘程序的组件
--
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成功编译后的运行界面:
图01:程序运行界面
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程序开发语言有了施展自身功能更广阔的舞台。
查看全文
相关阅读:
IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法
5个CSS3技术实现设计增强
SQL Server 2005 中的分区表和索引
推荐12款可用于前端开发的免费文本编辑器
960 Grid System
初识Byte
在线制作网站
sqlserver操作符篇 优化
ASP.NET 异常处理
Photoshop 隐藏的快捷键
原文地址:https://www.cnblogs.com/zhangchenliang/p/731060.html
最新文章
安装完Framework后如何不重启系统?
showplan_text查询计划查询sql执行顺序 时间 IO
中国内地楼市泡沫严重 租售比1000倍超美国
SQL Server 2000优化SELECT语句方法
Web 设计中的拉洋片效果 设计新潮
sqlserver数据库大型应用解决方案总结 数据库负载均衡
仿淘宝UED导航菜单
Hash Join
万能清除浮动样式
Session失效的处理办法
热门文章
优化 SQL Server CPU 性能
JavaScript 获取页面宽高的方法
分组查找前几条数据
SQL Server 2005 hash联接算法
WEB测试总结 (架构,设计)精华部分(转)
使用Photoshop+960 Grid System模板进行网页设计
IIS下配置Php+Mysql+zend的图文教程(完整版)
北京市参保人查询个人信息
Sql Server2005 实现Oracle10g的hash表分区功能
Response.ContentType 详细列表
Copyright © 2011-2022 走看看