用Visual C#做托盤程式

來源:互聯網
上載者:User

所謂托盤程式顧名思義就是象托起的盤子一樣的程式。而所謂的托起的盤子就是程式運行中顯示出的表徵圖,而托起的位置就是視窗系統的的工具列了。托盤程式具有直觀、佔用螢幕空間較小並且可以為它定義多個功能菜單,這就給操作者帶來了方便,所以越來越多的程式設計者都把程式設計成托盤這種方式。我們已經看過了用其他語言設計托盤程式的例子,其中的大部分,整個設計過程還是相對煩瑣的。而對於微軟公司極力推薦的下一代程式開發語言--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對象封裝好的菜單。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.