最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
首頁 > 編程開發 > VBnet >
  • vb.net教程之VB.NET編程之托盤程序篇

  • 2019-06-19 22:08 來源:未知

內容:托盤程序是指這樣一類程序:當程序運行后,會在系統的托盤區(也有說是狀態區域)創建此程序的圖標,使用者可以通過點擊圖標出現的菜單來控制程序的運行狀態。托盤程序有很多優點,如不占屏幕,后臺運行,便于控制等。所以現在越來越多的程序都做成了托盤程序。在VB.NET中,編寫托盤程序是比較方便和簡單的。這是因為VB.NET沒有自身類庫,它所使用的類庫是.Net框架中為所有.Net平臺開發語言提供的公用類庫——.Net FrameWork SDK。在這個類庫中,為編寫托盤程序提供了具體的類,調用這些類就可以實現程序的托盤效果了。從而也就擺脫了它的前身VB在處理這類問題時候的煩瑣。下面就通過二個具體例子來了解并掌握如何用VB.NET編寫托盤程序。

本文程序的設計及運行環境

(1)Windows 2000 Service
(2)Net Framework SDK 正式版

靜態托盤程序的編寫過程

所謂靜態托盤程序是指程序運行后,在系統托盤區的圖標處于靜止狀態的托盤程序。動態托盤程序正好與之相反,它是指在系統托盤區圖標呈現動畫效果的一類托盤程序。下面就來探討一下VB.NET是如何實現靜態托盤程序。

.Net FrameWork SDK為編寫托盤程序提供了一個組件:NotifyIcon組件。NotifyIcon組件是一個WinForm組件,位于命名空間"System.Windows.Forms"中,在VB.NET程序中,只要創建一個NotifyIcon組件的實例,并且對NotifyIcon實例的"Icon"屬性賦值,這樣一個簡單的托盤程序就完成了。下面就是這個簡單托盤程序對于的代碼(Form1.vb):

Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗體設計器生成的代碼 "
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 ( "Tray.ico" ) 
'創建一個Icon實例
<System.Diagnostics.DebuggerStepThrough ( ) > 
Private Sub InitializeComponent ( ) 
Me.components = New System.ComponentModel.Container ( ) 
Me.NotifyIcon1 = New System.Windows.Forms.NotifyIcon ( Me.components ) 
Me.NotifyIcon1.Text = "NotifyIcon1"
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 = "Form1"
Me.Text = "Form1"
End Sub
#End Region
End Class
'啟動程序
Module Module1
Sub Main ( ) 
Application.Run ( new Form1 ( ) ) 
End sub
End Module

但是這個托盤程序還不是真正意義上的托盤程序,因為它還有很多具體功能沒有實現,下面就列出這些功能,并介紹具體的實現方法
(1).托盤程序是隱藏窗口后,程序不應該顯示在任務欄中,并且一般運行后都不顯示窗口:
這是通過設定窗體的屬性來完成的,具體如下:
'設定程序不應該顯示在任務欄
Me.ShowInTaskbar = False
'設定程序運行后最小化
Me.WindowState = System.Windows.Forms.FormWindowState.Minimized 
(2).定義托盤程序中的菜單和相關事件:
往NotifyIcon實例中添加菜單,首先要創建ContextMenu實例,此實例主要作用是表示快捷菜單,其中的菜單項是通過創建MenuItem實例來實現,托盤程序中的菜單有幾個菜單項,就創建幾個MenuItem實例。然后把這些菜單項加入到ContextMenu實例,并把此實例賦值給NotifyIcon實例的ContextMenu屬性,這樣托盤程序右鍵點擊彈出的菜單就完成了。下面是具體代碼:

創建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 

把這些菜單項加入到ContextMenu實例,并把ContextMenu實例賦值給NotifyIcon實例的ContextMenu屬性:
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 = "VB.NET的托盤程序"
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 = "顯示窗體"
Me.MenuItem2.Index = 1
Me.MenuItem2.Text = "隱藏窗體"
Me.MenuItem3.Index = 2
Me.MenuItem3.Text = "退出" 
當把ContextMenu實例賦值給NotifyIcon實例的ContextMenu屬性后,托盤程序的缺省狀態是當鼠標右擊托盤圖標,就會彈出對應的菜單。這時就可以對其中的每一個菜單項定義相應的事件以及具體的處理方法。一個完整的靜態托盤程序的編寫過程就完成了。 
最后要請讀者注意的是,由于本文中的托盤程序的圖標并不是通過創建資源文件來實現的,而是通過創建Icon實例完成的。所以在程序運行的時候,必須在程序的當前目錄存在一個圖標文件,并且此圖標文件的名稱為"Tray.ico"。下面是這個靜態托盤程序的完整的代碼清單(Form2.vb):

Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗體設計器生成的代碼 "
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
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
Friend TrayIcon = New Icon ( "Tray.ico" ) 
<System.Diagnostics.DebuggerStepThrough ( ) > 
Private Sub InitializeComponent ( ) 
Me.components = New System.ComponentModel.Container ( ) 
Me.NotifyIcon1 = New System.Windows.Forms.NotifyIcon ( Me.components ) 
Me.ContextMenu1 = New System.Windows.Forms.ContextMenu ( ) 
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 = "VB.NET的托盤程序"
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 = "顯示窗體"
Me.MenuItem2.Index = 1
Me.MenuItem2.Text = "隱藏窗體"
Me.MenuItem3.Index = 2
Me.MenuItem3.Text = "退出"
Me.AutoScaleBaseSize = New System.Drawing.Size ( 6 , 14 ) 
Me.ClientSize = New System.Drawing.Size ( 292 , 273 ) 
Me.Name = "Form1"
'設定程序不應該顯示在任務欄
Me.ShowInTaskbar = False
Me.Text = "VB.NET之WinForm編程托盤程序篇"
'設定程序運行后最小化
Me.WindowState = System.Windows.Forms.FormWindowState.Minimized
End Sub
#End Region
'顯示托盤程序窗口
Private Sub MenuItem1_Click ( ByVal sender As System.Object ,
ByVal e As System.EventArgs ) Handles MenuItem1.Click
Me.WindowState = FormWindowState.Normal
Me.Show ( ) 
End Sub
'隱藏托盤程序窗口
Private Sub MenuItem2_Click ( ByVal sender As Object , 
ByVal e As System.EventArgs ) Handles MenuItem2.Click
Me.Hide ( ) 
End Sub
'推出托盤程序窗口
Private Sub MenuItem3_Click ( ByVal sender As Object , 
ByVal e As System.EventArgs ) Handles MenuItem3.Click
NotifyIcon1.Dispose ( ) 
Application.Exit ( ) 
End Sub
'雙擊圖標顯示窗體
Private Sub NotifyIcon1_DoubleClick ( ByVal sender As Object ,
ByVal e As System.EventArgs ) Handles NotifyIcon1.DoubleClick
Me.WindowState = FormWindowState.Normal
Me.Show ( ) 
End Sub
End Class
'啟動程序
Module Module1
Sub Main ( )
Application.Run ( new Form1 ( ) )
End sub
End Module

Form2.vb經過了下列命令編譯、連接后:
Vbc /r:system.dll /r:system.windows.froms.dll /r:system.drawing.dll form2.vb

就可以得到Form2.exe,下圖是From2.exe運行的界面:

 
圖01:托盤程序運行界面01


動態托盤程序的編寫過程
動態托盤程序中的托盤圖標之所以能夠呈現動畫效果,是因為程序中的一個定時器組
件每隔一段時間都不斷切換托盤圖標。本文是通過二個圖標的切換來表現動態效果的,讀者如果有好的、連續的圖標,也可以設定多個圖標的切換,而這只需要修改Timer1定時器中的"Tick"事件中的代碼就可以了。下面是此動態托盤程序的具體編制步驟:

要創建程序中的實例和變量:
Friend WithEvents NotifyIcon1 As System.Windows.Forms.NotifyIcon
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
'創建Icon實例,用以切換圖標
Friend Icon1 = New Icon ( "icon1.ico" ) 
Friend Icon2 = New Icon ( "icon2.ico" ) 
'為不同圖標的切換提供標識符
Dim BeginFlag As Boolean = True
'定時器
Friend WithEvents Timer1 As System.Windows.Forms.Timer 
初始化實例:
Me.components = New System.ComponentModel.Container ( ) 
Me.NotifyIcon1 = New System.Windows.Forms.NotifyIcon ( Me.components ) 
Me.ContextMenu1 = New System.Windows.Forms.ContextMenu ( ) 
Me.MenuItem1 = New System.Windows.Forms.MenuItem ( ) 
Me.MenuItem2 = New System.Windows.Forms.MenuItem ( ) 
Me.MenuItem3 = New System.Windows.Forms.MenuItem ( ) 
Me.Timer1 = New System.Windows.Forms.Timer ( Me.components ) 
Me.NotifyIcon1.ContextMenu = Me.ContextMenu1
Me.NotifyIcon1.Text = "VB.NET的托盤程序"
Me.NotifyIcon1.Visible = True
'設定托盤程序托盤區位置顯示缺省圖標
Me.NotifyIcon1.Icon = Icon1
'在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 = "開始轉動"
Me.MenuItem2.Index = 1
Me.MenuItem2.Text = "停止轉動"
Me.MenuItem3.Index = 2
Me.MenuItem3.Text = "退出"
Me.AutoScaleBaseSize = New System.Drawing.Size ( 6 , 14 ) 
Me.ClientSize = New System.Drawing.Size ( 292 , 273 ) 
Me.Name = "Form1"
Me.ShowInTaskbar = False
Me.Text = "VB.NET之WinForm編程動態托盤程序"
Me.WindowState = System.Windows.Forms.FormWindowState.Minimized

定義托盤程序中菜單項對應的事件,以及具體的處理方法:
'開始托盤圖標的轉動
Private Sub MenuItem1_Click ( ByVal sender As System.Object , 
ByVal e As System.EventArgs ) Handles MenuItem1.Click
Timer1.Enabled = True
End Sub
'停止托盤圖標的轉動
Private Sub MenuItem2_Click ( ByVal sender As Object ,
ByVal e As System.EventArgs ) Handles MenuItem2.Click
Timer1.Enabled = False
End Sub
'關閉程序,清除托盤資源
Private Sub MenuItem3_Click ( ByVal sender As Object , 
ByVal e As System.EventArgs ) Handles MenuItem3.Click
NotifyIcon1.Dispose ( ) 
Application.Exit ( ) 
End Sub
'根據標識符,來確定托盤圖標類型
Private Sub Timer1_Tick ( ByVal sender As Object ,
ByVal e As System.EventArgs ) Handles Timer1.Tick
If BeginFlag = True Then
NotifyIcon1.Icon = Icon2
BeginFlag = False
Else
NotifyIcon1.Icon = Icon1
BeginFlag = True
End If
End Sub

至此編寫動態托盤程序的主要步驟就介紹完了,和上面的靜態托盤程序相同,在運行此程序的時候必須保證此程序當前目錄存在二個Icon文件,并且名稱為"Icon1.ico"和"Icon2.ico"。這里并沒有給出動態托盤程序的完整代碼清單,讀者只需要把上面這些關鍵步驟的代碼覆蓋到Form2.vb中的相應位置就可以得到動態托盤程序的源程序文件Form3.vb。這應該不算很難,下面是編譯Form3.vb的命令:

Vbc /r:system.dll /r:system.windows.froms.dll /r:system.drawing.dll form2.vb

成功編譯、連接后就得到Form3.exe,下圖是Form3.exe的運行界面:

圖02:托盤程序運行界面02

總結

托盤程序是現在比較流行的一種程序類型。本文中介紹的二個程序,也是托盤程序中比較典型的二個,希望對各位了解并掌握編寫托盤程序有所幫助。

pk10赛车冠军技巧
最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
24日3d彩票开奖号码 龙王捕鱼龙王炮 青海快3开奖号码走趋图 老11选5开奖视频 事故拖车赚钱嘛 手机赚钱推销 瑜伽柠檬 老师赚钱 佳彩国际群 财神捕鱼游戏下载官网