C# 實現任務欄圖標程序

這是一個.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;//顯示當前主窗口

}

}


四、程序運行

運行程序,將顯示一個主窗口,此時還可以看到在任務欄上面多了一個圖標。當鼠標移到其上停留一下時,將顯示一個簡單的提示信息,點擊窗口上的“隱藏窗口”按鈕將隱藏主窗口,如下圖所示:
http://www.ccw.com.cn/htm/app/aprog/01_12_6_3b.GIFscreen.width-550)this.width=screen.width-550" border=0>
在圖標上點擊鼠標右鍵將顯示一個彈出菜單,此時可以選擇相應的菜單執行相應的功能如“顯示窗口”、“隱藏窗口”、“退出程序等”,如下圖所示:
http://www.ccw.com.cn/htm/app/aprog/01_12_6_3c.GIFscreen.width-550)this.width=screen.width-550" border=0>
例如,在彈出的菜單中點擊“執行程序”將信息一個信息提示框,如下圖所示:
http://www.ccw.com.cn/htm/app/aprog/01_12_6_3d.GIFscreen.width-550)this.width=screen.width-550" border=0>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章