国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C#做托盤程序

2024-07-21 02:19:20
字體:
來源:轉載
供稿:網友

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

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程序開發語言有了施展自身功能更廣闊的舞臺。


商業源碼熱門下載www.html.org.cn

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉中市| 临沭县| 榆林市| 宜城市| 霸州市| 腾冲县| 杭锦旗| 鄄城县| 达孜县| 南川市| 林西县| 乌兰浩特市| 万源市| 贵溪市| 红安县| 焦作市| 浙江省| 马龙县| 大邑县| 南京市| 牙克石市| 托克逊县| 于都县| 炎陵县| 宜川县| 宿松县| 叙永县| 毕节市| 双牌县| 广南县| 安化县| 会泽县| 萝北县| 饶阳县| 夏河县| 巫溪县| 瑞丽市| 大竹县| 巫溪县| 金寨县| 泌阳县|