1. 程式人生 > >用 C# 編寫一個停放在工作列上的圖示程式

用 C# 編寫一個停放在工作列上的圖示程式


用 C# 編寫一個停放在工作列上的圖示

作者: 蔡世友 2001-12-10 23:02:26


C#語言是微軟公司針對.Net平臺才推出來的一門新語言,作為.Net平臺的第一語言,它幾乎集中了所有關於軟體開發和軟體工程研究的最新成果。其是當前第一個完全面向元件的語言。
微軟的.Net平臺堪稱為新一代的網際網路平臺。對於技術開發人員來說,.Net平臺的兩大特性是非常卓越的,首先是其所提供的公共語言執行時,也就是公用語言執行平臺,另一方面就是其龐大而全面的統一程式設計類。
下面我向大家介紹一個.Net平臺上用C# 寫的可以停放在工作列上的圖示程式,類似於SQL管理器、防病毒軟體圖示及OICQ圖示等。

一、圖示程式基本概念



我們這裡所指的圖示程式是類似於在Windows中經常接觸的停放在工作列上,在後臺執行的病毒監視,SQL服務管理器等程式。這些程式啟動後形成一個圖示停在工作列上,具有以下的外觀特徵:
雙擊圖示可開啟程式主視窗。
當滑鼠停在圖示上時顯示提示資訊。
在圖示上點選滑鼠右鍵可以彈出一個快捷選單,通過點選快捷選單上的選單項可以執行相應的程式功能。

二、程式使用類簡介

.Net提供了非常多的類,我們在開發過程中只需要使用其提供的各種類就能夠實現我們的大部份功能,.Net平臺中的類有的是封裝的,有的是虛擬的,大多數的都是一般的公共類。你可以直接構造這些公共類的例項,也可以通過繼承而使用類的全部功能。在本程式中,我們使用了很多.Net類,下面,我將分別對主要的類作簡單介紹!

*System.Windows.Fomrs.NotifyIcon類

這是本程式中最主要的類,其從Component類繼承的一個封裝類,不可繼承,主要功能是產生一個可以停放在工作列最右邊的圖示程式。下面是其主要成員介紹:
建構函式(Constructor Function)
public NotifyIcon(); 不帶任何引數,直接構造一個NotifyIcon物件。
Public NotifyIcon(IContainer container); 帶一個Icontainer引數,代表NotifyIcon容器控制元件。

屬性(Properties)
ContextMenu 物件的彈出式選單。
Icon 物件的圖示
Text 物件的ToolTip文字,也即是當滑鼠停在物件上時顯示的文字。
Visible 表示物件是否是可見的。

事件(Events)
Clcik 當單擊物件圖示時引發。
DoubleClick 當雙擊物件圖示時引發。

*System.Windows.Forms.Application類

Windows Forms應用程式啟動類,提供表態的方法管理運用程式,如啟動Windows Forms使用Application.Run(Form),而退出程式使用Application.Exit()等。

*System.Windows.Forms.Form類

Windows Forms程式窗體類,視窗程式的窗體一般都是直接或間接了從該類產生,如產生一個簡單的窗體使用new Forms()即可。在一般應用程式中,由於使用者窗體上還要根據自己的需要新增更多的視覺化元素及控制元件,如按鈕、標籤、文字框等;因此,大多數我們在使用Form類時都是從該類派生出使用者自己的窗體類。

*System.Windows.Forms.Button類

按鈕控制元件類,提供一個可視的按鈕元素,一般情況下通過Text屬性設定按鈕的顯示文字,再為按鈕新增Click事件響應函式即可使用。

*System.Windows.Forms.Label類

文字標籤類,可以通過設定其Text屬性使其在窗體上顯示一般的文字資訊。
System.Windows.Forms.MenuItem類

Windows Forms選單項類,可以生成一個簡單的選單項,選單項是所有選單的基本構成元素,通過該類可以設定選單項的外觀顯示屬性及事件響應方法等。該類提供了多種生成選單項物件的建構函式,在實際應用中一般採用MenuItem(string Text)的方法生成一個顯示文字為Text的選單項。選單項類提供Click事件使得使用者點選選單時可以響應。

*System.Windows.Forms.ContextMenu類

彈出選單類,生成一個彈出式選單物件。其包括了一個選單項集合屬性,使其可以非常方便的管理及存取彈出選單的各項。生成彈出選單物件使用其建構函式,有兩種方法:一種是直接使用ContextMenu(),不帶任何引數。另一種是使用ContextMenu(MenuItem[] menus),代有一個選單項陣列作為引數。

三、程式設計及主要程式碼

程式設計
本程式使用Visual Studio .Net編寫,首先通過新建Windows應用專案生成一個Windows Forms初始窗體,在窗體上新增一個文字為“隱藏窗體”的按鈕,及一個說明演示程式的標籤,並雙擊按鈕,在其Click事件響應方法中新增隱藏窗休的程式碼。然後在工具欄面板中找到NotifyIcon控制元件,並把其拖到窗體上,然後設定其Text屬性及Icon屬性(Icon屬性為圖片,可以通過控制元件屬性欄選擇設定)。雙擊窗體為窗體的Load事件響應方法新增NotifyIcon類的初始化程式碼,完成後即可直接編譯執行。如下圖所示:

http://www.ccw.com.cn/htm/app/aprog/01_12_6_3a.GIFscreen.width-550)this.width=screen.width-550" border=0>

程式主要程式碼及註釋


下面將列出本程式中部份主要程式碼及詳細註釋,以供大家加深對程式的理解。

public class Form1 : System.Windows.Forms.Form 

{ 
    //定義一個NotifyIcon物件
     private System.Windows.Forms.NotifyIcon notifyIcon1; 
    private void InitializeComponent()//Visual Studio .Net自動產生,窗體初始化時執行 
    { 
        //建立NotifyIcon物件並設定其基本的屬性如Icon,Text及Visible等 
         this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); 
        this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); 
        this.notifyIcon1.Text = "這是我的測試程式,還Cool吧!"; 
        this.notifyIcon1.Visible = true; 
    } 

    static void Main()  
    { 
        Application.Run(new Form1());//啟動執行程式 
    } 

    private void Form1_Load(object sender, System.EventArgs e) 
    { 
        //生成4個選單項物件,顯示文字分別為"顯示視窗"、"隱藏視窗"、"執行程式"、"退出程式" 
        MenuItem menuItem1=new MenuItem("顯示視窗"); 
        MenuItem menuItem2=new MenuItem("隱藏視窗"); 
        MenuItem menuItem3=new MenuItem("執行程式"); 
        MenuItem menuItem4=new MenuItem("退出程式"); 
        //分別為4個選單項新增Click事件響應函式 
         menuItem1.Click+=new System.EventHandler(this.menuItem1_Click); 
        menuItem2.Click+=new System.EventHandler(this.menuItem2_Click); 
        menuItem3.Click+=new System.EventHandler(this.menuItem3_Click); 
        menuItem4.Click+=new System.EventHandler(this.menuItem4_Click); 
       //設定NotifyIcon物件的ContextMenu屬性為生面的彈出選單物件 
         notifyIcon1.ContextMenu=new ContextMenu(new MenuItem[]{menuItem1,menuItem2,menuItem3,menuItem4}); 
       //當用戶雙擊程式圖示時將執行相應的函式 
        notifyIcon1.DoubleClick+=new System.EventHandler(this.notifyIcon_DBClick); 
    } 

private void menuItem1_Click(object sender,System.EventArgs e)//“顯示視窗”選單的響應方法 

{ 

if(this.Visible==false)this.Visible=true;//假如當前視窗沒顯示則顯示當前視窗 

} 

private void menuItem2_Click(object sender,System.EventArgs e)//"隱藏視窗"選單的響應方法 

{ 

if(this.Visible==true)this.Visible=false;//假如當前視窗為顯示的則隱藏視窗 

} 

private void menuItem3_Click(object sender,System.EventArgs e)//"執行程式"選單的響應方法 

{ 

//顯示一個提示資訊框,表示事件已經得到響應 

MessageBox.Show("演示程式已經執行,此處功能就是顯示一個提示框!","提示資訊",MessageBoxButtons.OK,MessageBoxIcon.Information); 

} 

private void menuItem4_Click(object sender,System.EventArgs e)//“退出程式”選單的響應方法 

{ 

    this.Close();//關閉當前物件(即窗體) 

    Application.Exit();//通過Application類的靜態方法Exit()退出應用程式 

} 

 

private void button1_Click(object sender, System.EventArgs e)//使用者單擊按鈕時的響應方法 

{ 

    this.Visible=false;//隱藏當前主視窗 

} 

private void notifyIcon_DBClick(object sender, System.EventArgs e)//使用者雙擊應用程式圖示進的響應方法 

{ 

    this.Visible=true;//顯示當前主視窗 

} 

} 




四、程式執行

執行程式,將顯示一個主視窗,此時還可以看到在工作列上面多了一個圖示。當滑鼠移到其上停留一下時,將顯示一個簡單的提示資訊,點選視窗上的“隱藏視窗”按鈕將隱藏主視窗,如下圖所示