设为首页收藏本站language 语言切换
查看: 1246|回复: 0
收起左侧

VB.NET编程之托盘程序篇

[复制链接]
发表于 2010-2-25 10:25:50 | 显示全部楼层 |阅读模式
<p >托盘程序是指这样一类程序:当程序运行后,会在系统的托盘区(也有说是状态区域)创建此程序的图标,使用者可以通过点击图标出现的菜单来控制程序的运行状态。托盘程序有很多优点,如不占屏幕,后台运行,便于控制等。所以现在越来越多的程序都做成了托盘程序。在VB.NET中,编写托盘程序是比较方便和简单的。这是因为VB.NET没有自身类库,它所使用的类库是.Net框架中为所有.Net平台开发语言提供的公用类库——.Net FrameWork SDK。在这个类库中,为编写托盘程序提供了具体的类,调用这些类就可以实现程序的托盘效果了。从而也就摆脱了它的前身VB在处理这类问题时候的烦琐。下面就通过二个具体例子来了解并掌握如何用VB.NET编写托盘程序。<p ><b>本文程序的设计及运行环境</b><p >(1)Windows 2000 Service<p >(2)Net Framework SDK 正式版<p ><center><font color="#000099"><strong>静态托盘程序的编写过程</strong></font></center><p >所谓静态托盘程序是指程序运行后,在系统托盘区的图标处于静止状态的托盘程序。动态托盘程序正好与之相反,它是指在系统托盘区图标呈现动画效果的一类托盘程序。下面就来探讨一下VB.NET是如何实现静态托盘程序。<p >.Net FrameWork SDK为编写托盘程序提供了一个组件:NotifyIcon组件。NotifyIcon组件是一个WinForm组件,位于命名空间"System.Windows.Forms"中,在VB.NET程序中,只要创建一个NotifyIcon组件的实例,并且对NotifyIcon实例的"Icon"属性赋值,这样一个简单的托盘程序就完成了。下面就是这个简单托盘程序对于的代码(Form1.vb):<p ><ccid_nobr><table width="550" border="1" cellspacing="0" cellpadding="2" bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>ublic Class Form1    Inherits System.Windows.Forms.Form        #Region &quot; Windows 窗体设计器生成的代码 &quot;            Public Sub New ( )                 MyBase.New ( )                 '该调用是 Windows 窗体设计器所必需的。                InitializeComponent ( )                 '在 InitializeComponent ( )  调用之后添加任何初始化            End Sub            '窗体重写处置以清理组件列表。    Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )         If disposing Then            If Not  ( components Is Nothing )  Then                components.Dispose ( )             End If        End If        MyBase.Dispose ( disposing )     End Sub    'Windows 窗体设计器所必需的    Private components As System.ComponentModel.IContainer    '注意:以下过程是 Windows 窗体设计器所必需的    '可以使用 Windows 窗体设计器修改此过程。    '不要使用代码编辑器修改它。    Friend WithEvents NotifyIcon1 As System.Windows.Forms.NotifyIcon    '创建一个NotifyIcon实例    Friend TrayIcon = New Icon ( &quot;Tray.ico&quot; )     '创建一个Icon实例    &lt;System.Diagnostics.DebuggerStepThrough ( ) &gt;     Private Sub InitializeComponent ( )         Me.components = New System.ComponentModel.Container ( )         Me.NotifyIcon1 = New System.Windows.Forms.NotifyIcon ( Me.components )                 Me.NotifyIcon1.Text = &quot;NotifyIcon1&quot;                Me.NotifyIcon1.Visible = True                '对NotifyIcon实例的Icon属性赋值,完成简单托盘程序                Me.NotifyIcon1.Icon = TrayIcon                Me.AutoScaleBaseSize = New System.Drawing.Size ( 6 , 14 )                 Me.ClientSize = New System.Drawing.Size ( 292 , 273 )                 Me.Name = &quot;Form1&quot;                Me.Text = &quot;Form1&quot;            End Sub        #End Region        End Class        '启动程序        Module Module1        Sub Main ( )           Application.Run ( new Form1 ( ) )         End sub        End Module</ccid_code></pre></td></tr></table></ccid_nobr><p >但是这个托盘程序还不是真正意义上的托盘程序,因为它还有很多具体功能没有实现,下面就列出这些功能,并介绍具体的实现方法<p >(1).托盘程序是隐藏窗口后,程序不应该显示在任务栏中,并且一般运行后都不显示窗口:<p >这是通过设定窗体的属性来完成的,具体如下:<p ><ccid_nobr><table width="550" border="1" cellspacing="0" cellpadding="2" bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>'设定程序不应该显示在任务栏Me.ShowInTaskbar = False'设定程序运行后最小化   Me.WindowState = System.Windows.Forms.FormWindowState.Minimized</ccid_code></pre></td></tr></table></ccid_nobr><p >(2).定义托盘程序中的菜单和相关事件:<p >往NotifyIcon实例中添加菜单,首先要创建ContextMenu实例,此实例主要作用是表示快捷菜单,其中的菜单项是通过创建MenuItem实例来实现,托盘程序中的菜单有几个菜单项,就创建几个MenuItem实例。然后把这些菜单项加入到ContextMenu实例,并把此实例赋值给NotifyIcon实例的ContextMenu属性,这样托盘程序右键点击弹出的菜单就完成了。下面是具体代码:<p ><ccid_nobr><table width="550" border="1" cellspacing="0" cellpadding="2" bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>创建ContextMenu实例和MenuItem实例:    Friend WithEvents ContextMenu1 As System.Windows.Forms.ContextMenu    Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem    Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem    Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem</ccid_code></pre></td></tr></table></ccid_nobr><p >把这些菜单项加入到ContextMenu实例,并把ContextMenu实例赋值给NotifyIcon实例的ContextMenu属性:<p ><ccid_nobr><table width="550" border="1" cellspacing="0" cellpadding="2" bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>Me.MenuItem1 = New System.Windows.Forms.MenuItem ( )         Me.MenuItem2 = New System.Windows.Forms.MenuItem ( )         Me.MenuItem3 = New System.Windows.Forms.MenuItem ( )         Me.NotifyIcon1.ContextMenu = Me.ContextMenu1        Me.NotifyIcon1.Text = &quot;VB.NET的托盘程序&quot;        Me.NotifyIcon1.Visible = True        '设定托盘程序托盘区位置显示图标        Me.NotifyIcon1.Icon = TrayIcon        '在ContextMenu实例中加入菜单项        Me.ContextMenu1.MenuItems.Add ( Me.MenuItem1 )          Me.ContextMenu1.MenuItems.Add ( Me.MenuItem2 )         Me.ContextMenu1.MenuItems.Add ( Me.MenuItem3 )         Me.MenuItem1.Index = 0        Me.MenuItem1.Text = &quot;显示窗体&quot;        Me.MenuItem2.Index = 1        Me.MenuItem2.Text = &quot;隐藏窗体&quot;        Me.MenuItem3.Index = 2        Me.MenuItem3.Text = &quot;退出&quot;</ccid_code></pre></td></tr></table></ccid_nobr><p >当把ContextMenu实例赋值给NotifyIcon实例的ContextMenu属性后,托盘程序的缺省状态是当鼠标右击托盘图标,就会弹出对应的菜单。这时就可以对其中的每一个菜单项定义相应的事件以及具体的处理方法。一个完整的静态托盘程序的编写过程就完成了。                                 <p align="center"><font color="FF0000" >1</font>2<span class="content01">下一页&gt;&gt;</span></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-12 01:11 , Processed in 0.080790 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表