C#托盘程序
一. 托盤程序的主要步驟及解決方法:
為什么說用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源程序代碼:
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程序開發語言有了施展自身功能更廣闊的舞臺。?
?
為什么說用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源程序代碼:
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程序開發語言有了施展自身功能更廣闊的舞臺。?
?
總結
- 上一篇: 报考一级消防工程师需要多少钱?
- 下一篇: 微信网名右上角的数字