用 C# 編寫一個停放在任務(wù)欄上的圖標程序
更新時間:2007年03月09日 00:00:00 作者:
用 C# 編寫一個停放在任務(wù)欄上的圖標程序
作者: 蔡世友 類別: C#/VB 日期: 2002-1-30 10:21:46
01-12-6 上午 10:53:11
--------------------------------------------------------------------------------
引 言
C#語言是微軟公司針對.Net平臺才推出來的一門新語言,作為.Net平臺的第一語言,它幾乎集中了所有關(guān)于軟件開發(fā)和軟件工程研究的最新成果。其是當前第一個完全面向組件的語言。
微軟的.Net平臺堪稱為新一代的互聯(lián)網(wǎng)平臺。對于技術(shù)開發(fā)人員來說,.Net平臺的兩大特性是非常卓越的,首先是其所提供的公共語言運行時,也就是公用語言運行平臺,另一方面就是其龐大而全面的統(tǒng)一編程類。
下面我向大家介紹一個.Net平臺上用C# 寫的可以停放在任務(wù)欄上的圖標程序,類似于SQL管理器、防病毒軟件圖標及OICQ圖標等。
一、圖標程序基本概念
我們這里所指的圖標程序是類似于在Windows中經(jīng)常接觸的停放在任務(wù)欄上,在后臺運行的病毒監(jiān)視,SQL服務(wù)管理器等程序。這些程序啟動后形成一個圖標停在任務(wù)欄上,具有以下的外觀特征:
雙擊圖標可打開程序主窗口。
當鼠標停在圖標上時顯示提示信息。
在圖標上點擊鼠標右鍵可以彈出一個快捷菜單,通過點擊快捷菜單上的菜單項可以運行相應(yīng)的程序功能。
二、程序使用類簡介
.Net提供了非常多的類,我們在開發(fā)過程中只需要使用其提供的各種類就能夠?qū)崿F(xiàn)我們的大部份功能,.Net平臺中的類有的是封裝的,有的是虛擬的,大多數(shù)的都是一般的公共類。你可以直接構(gòu)造這些公共類的實例,也可以通過繼承而使用類的全部功能。在本程序中,我們使用了很多.Net類,下面,我將分別對主要的類作簡單介紹!
System.Windows.Fomrs.NotifyIcon類
這是本程序中最主要的類,其從Component類繼承的一個封裝類,不可繼承,主要功能是產(chǎn)生一個可以停放在任務(wù)欄最右邊的圖標程序。下面是其主要成員介紹:
構(gòu)造函數(shù)(Constructor Function)
public NotifyIcon(); 不帶任何參數(shù),直接構(gòu)造一個NotifyIcon對象。
Public NotifyIcon(IContainer container); 帶一個Icontainer參數(shù),代表NotifyIcon容器控件。
屬性(Properties)
ContextMenu 對象的彈出式菜單。
Icon 對象的圖標
Text 對象的ToolTip文本,也即是當鼠標停在對象上時顯示的文本。
Visible 表示對象是否是可見的。
事件(Events)
Clcik 當單擊對象圖標時引發(fā)。
DoubleClick 當雙擊對象圖標時引發(fā)。
System.Windows.Forms.Application類
Windows Forms應(yīng)用程序啟動類,提供表態(tài)的方法管理運用程序,如啟動Windows Forms使用Application.Run(Form),而退出程序使用Application.Exit()等。
System.Windows.Forms.Form類
Windows Forms程序窗體類,視窗程序的窗體一般都是直接或間接了從該類產(chǎn)生,如產(chǎn)生一個簡單的窗體使用new Forms()即可。在一般應(yīng)用程序中,由于用戶窗體上還要根據(jù)自己的需要添加更多的可視化元素及控件,如按鈕、標簽、文本框等;因此,大多數(shù)我們在使用Form類時都是從該類派生出用戶自己的窗體類。
System.Windows.Forms.Button類
按鈕控件類,提供一個可視的按鈕元素,一般情況下通過Text屬性設(shè)置按鈕的顯示文本,再為按鈕添加Click事件響應(yīng)函數(shù)即可使用。
System.Windows.Forms.Label類
文字標簽類,可以通過設(shè)置其Text屬性使其在窗體上顯示一般的文字信息。
System.Windows.Forms.MenuItem類
Windows Forms菜單項類,可以生成一個簡單的菜單項,菜單項是所有菜單的基本構(gòu)成元素,通過該類可以設(shè)置菜單項的外觀顯示屬性及事件響應(yīng)方法等。該類提供了多種生成菜單項對象的構(gòu)造函數(shù),在實際應(yīng)用中一般采用MenuItem(string Text)的方法生成一個顯示文本為Text的菜單項。菜單項類提供Click事件使得用戶點擊菜單時可以響應(yīng)。
System.Windows.Forms.ContextMenu類
彈出菜單類,生成一個彈出式菜單對象。其包括了一個菜單項集合屬性,使其可以非常方便的管理及存取彈出菜單的各項。生成彈出菜單對象使用其構(gòu)造函數(shù),有兩種方法:一種是直接使用ContextMenu(),不帶任何參數(shù)。另一種是使用ContextMenu(MenuItem[] menus),代有一個菜單項數(shù)組作為參數(shù)。
三、程序設(shè)計及主要代碼
程序設(shè)計
本程序使用Visual Studio .Net編寫,首先通過新建Windows應(yīng)用項目生成一個Windows Forms初始窗體,在窗體上添加一個文本為“隱藏窗體”的按鈕,及一個說明演示程序的標簽,并雙擊按鈕,在其Click事件響應(yīng)方法中添加隱藏窗休的代碼。然后在工具欄面板中找到NotifyIcon控件,并把其拖到窗體上,然后設(shè)置其Text屬性及Icon屬性(Icon屬性為圖片,可以通過控件屬性欄選擇設(shè)置)。雙擊窗體為窗體的Load事件響應(yīng)方法添加NotifyIcon類的初始化代碼,完成后即可直接編譯運行。如下圖所示:
程序主要代碼及注釋
下面將列出本程序中部份主要代碼及詳細注釋,以供大家加深對程序的理解。
public class Form1 : System.Windows.Forms.Form
{
//定義一個NotifyIcon對象
private System.Windows.Forms.NotifyIcon notifyIcon1;
private void InitializeComponent()//Visual Studio .Net自動產(chǎn)生,窗體初始化時執(zhí)行
{
//創(chuàng)建NotifyIcon對象并設(shè)置其基本的屬性如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個菜單項對象,顯示文本分別為"顯示窗口"、"隱藏窗口"、"執(zhí)行程序"、"退出程序"
MenuItem menuItem1=new MenuItem("顯示窗口");
MenuItem menuItem2=new MenuItem("隱藏窗口");
MenuItem menuItem3=new MenuItem("執(zhí)行程序");
MenuItem menuItem4=new MenuItem("退出程序");
//分別為4個菜單項添加Click事件響應(yīng)函數(shù)
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);
//設(shè)置NotifyIcon對象的ContextMenu屬性為生面的彈出菜單對象
notifyIcon1.ContextMenu=new ContextMenu(new MenuItem[]{menuItem1,menuItem2,menuItem3,menuItem4});
//當用戶雙擊程序圖標時將執(zhí)行相應(yīng)的函數(shù)
notifyIcon1.DoubleClick+=new System.EventHandler(this.notifyIcon_DBClick);
}
private void menuItem1_Click(object sender,System.EventArgs e)//“顯示窗口”菜單的響應(yīng)方法
{
if(this.Visible==false)this.Visible=true;//假如當前窗口沒顯示則顯示當前窗口
}
private void menuItem2_Click(object sender,System.EventArgs e)//"隱藏窗口"菜單的響應(yīng)方法
{
if(this.Visible==true)this.Visible=false;//假如當前窗口為顯示的則隱藏窗口
}
private void menuItem3_Click(object sender,System.EventArgs e)//"執(zhí)行程序"菜單的響應(yīng)方法
{
//顯示一個提示信息框,表示事件已經(jīng)得到響應(yīng)
MessageBox.Show("演示程序已經(jīng)執(zhí)行,此處功能就是顯示一個提示框!","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
private void menuItem4_Click(object sender,System.EventArgs e)//“退出程序”菜單的響應(yīng)方法
{
this.Close();//關(guān)閉當前對象(即窗體)
Application.Exit();//通過Application類的靜態(tài)方法Exit()退出應(yīng)用程序
}
private void button1_Click(object sender, System.EventArgs e)//用戶單擊按鈕時的響應(yīng)方法
{
this.Visible=false;//隱藏當前主窗口
}
private void notifyIcon_DBClick(object sender, System.EventArgs e)//用戶雙擊應(yīng)用程序圖標進的響應(yīng)方法
{
this.Visible=true;//顯示當前主窗口
}
}
四、程序運行
運行程序,將顯示一個主窗口,此時還可以看到在任務(wù)欄上面多了一個圖標。當鼠標移到其上停留一下時,將顯示一個簡單的提示信息,點擊窗口上的“隱藏窗口”按鈕將隱藏主窗口,如下圖所示:
在圖標上點擊鼠標右鍵將顯示一個彈出菜單,此時可以選擇相應(yīng)的菜單執(zhí)行相應(yīng)的功能如“顯示窗口”、“隱藏窗口”、“退出程序等”,如下圖所示:
例如,在彈出的菜單中點擊“執(zhí)行程序”將信息一個信息提示框,如下圖所示:
作者: 蔡世友 類別: C#/VB 日期: 2002-1-30 10:21:46
01-12-6 上午 10:53:11
--------------------------------------------------------------------------------
引 言
C#語言是微軟公司針對.Net平臺才推出來的一門新語言,作為.Net平臺的第一語言,它幾乎集中了所有關(guān)于軟件開發(fā)和軟件工程研究的最新成果。其是當前第一個完全面向組件的語言。
微軟的.Net平臺堪稱為新一代的互聯(lián)網(wǎng)平臺。對于技術(shù)開發(fā)人員來說,.Net平臺的兩大特性是非常卓越的,首先是其所提供的公共語言運行時,也就是公用語言運行平臺,另一方面就是其龐大而全面的統(tǒng)一編程類。
下面我向大家介紹一個.Net平臺上用C# 寫的可以停放在任務(wù)欄上的圖標程序,類似于SQL管理器、防病毒軟件圖標及OICQ圖標等。
一、圖標程序基本概念
我們這里所指的圖標程序是類似于在Windows中經(jīng)常接觸的停放在任務(wù)欄上,在后臺運行的病毒監(jiān)視,SQL服務(wù)管理器等程序。這些程序啟動后形成一個圖標停在任務(wù)欄上,具有以下的外觀特征:
雙擊圖標可打開程序主窗口。
當鼠標停在圖標上時顯示提示信息。
在圖標上點擊鼠標右鍵可以彈出一個快捷菜單,通過點擊快捷菜單上的菜單項可以運行相應(yīng)的程序功能。
二、程序使用類簡介
.Net提供了非常多的類,我們在開發(fā)過程中只需要使用其提供的各種類就能夠?qū)崿F(xiàn)我們的大部份功能,.Net平臺中的類有的是封裝的,有的是虛擬的,大多數(shù)的都是一般的公共類。你可以直接構(gòu)造這些公共類的實例,也可以通過繼承而使用類的全部功能。在本程序中,我們使用了很多.Net類,下面,我將分別對主要的類作簡單介紹!
System.Windows.Fomrs.NotifyIcon類
這是本程序中最主要的類,其從Component類繼承的一個封裝類,不可繼承,主要功能是產(chǎn)生一個可以停放在任務(wù)欄最右邊的圖標程序。下面是其主要成員介紹:
構(gòu)造函數(shù)(Constructor Function)
public NotifyIcon(); 不帶任何參數(shù),直接構(gòu)造一個NotifyIcon對象。
Public NotifyIcon(IContainer container); 帶一個Icontainer參數(shù),代表NotifyIcon容器控件。
屬性(Properties)
ContextMenu 對象的彈出式菜單。
Icon 對象的圖標
Text 對象的ToolTip文本,也即是當鼠標停在對象上時顯示的文本。
Visible 表示對象是否是可見的。
事件(Events)
Clcik 當單擊對象圖標時引發(fā)。
DoubleClick 當雙擊對象圖標時引發(fā)。
System.Windows.Forms.Application類
Windows Forms應(yīng)用程序啟動類,提供表態(tài)的方法管理運用程序,如啟動Windows Forms使用Application.Run(Form),而退出程序使用Application.Exit()等。
System.Windows.Forms.Form類
Windows Forms程序窗體類,視窗程序的窗體一般都是直接或間接了從該類產(chǎn)生,如產(chǎn)生一個簡單的窗體使用new Forms()即可。在一般應(yīng)用程序中,由于用戶窗體上還要根據(jù)自己的需要添加更多的可視化元素及控件,如按鈕、標簽、文本框等;因此,大多數(shù)我們在使用Form類時都是從該類派生出用戶自己的窗體類。
System.Windows.Forms.Button類
按鈕控件類,提供一個可視的按鈕元素,一般情況下通過Text屬性設(shè)置按鈕的顯示文本,再為按鈕添加Click事件響應(yīng)函數(shù)即可使用。
System.Windows.Forms.Label類
文字標簽類,可以通過設(shè)置其Text屬性使其在窗體上顯示一般的文字信息。
System.Windows.Forms.MenuItem類
Windows Forms菜單項類,可以生成一個簡單的菜單項,菜單項是所有菜單的基本構(gòu)成元素,通過該類可以設(shè)置菜單項的外觀顯示屬性及事件響應(yīng)方法等。該類提供了多種生成菜單項對象的構(gòu)造函數(shù),在實際應(yīng)用中一般采用MenuItem(string Text)的方法生成一個顯示文本為Text的菜單項。菜單項類提供Click事件使得用戶點擊菜單時可以響應(yīng)。
System.Windows.Forms.ContextMenu類
彈出菜單類,生成一個彈出式菜單對象。其包括了一個菜單項集合屬性,使其可以非常方便的管理及存取彈出菜單的各項。生成彈出菜單對象使用其構(gòu)造函數(shù),有兩種方法:一種是直接使用ContextMenu(),不帶任何參數(shù)。另一種是使用ContextMenu(MenuItem[] menus),代有一個菜單項數(shù)組作為參數(shù)。
三、程序設(shè)計及主要代碼
程序設(shè)計
本程序使用Visual Studio .Net編寫,首先通過新建Windows應(yīng)用項目生成一個Windows Forms初始窗體,在窗體上添加一個文本為“隱藏窗體”的按鈕,及一個說明演示程序的標簽,并雙擊按鈕,在其Click事件響應(yīng)方法中添加隱藏窗休的代碼。然后在工具欄面板中找到NotifyIcon控件,并把其拖到窗體上,然后設(shè)置其Text屬性及Icon屬性(Icon屬性為圖片,可以通過控件屬性欄選擇設(shè)置)。雙擊窗體為窗體的Load事件響應(yīng)方法添加NotifyIcon類的初始化代碼,完成后即可直接編譯運行。如下圖所示:
程序主要代碼及注釋
下面將列出本程序中部份主要代碼及詳細注釋,以供大家加深對程序的理解。
public class Form1 : System.Windows.Forms.Form
{
//定義一個NotifyIcon對象
private System.Windows.Forms.NotifyIcon notifyIcon1;
private void InitializeComponent()//Visual Studio .Net自動產(chǎn)生,窗體初始化時執(zhí)行
{
//創(chuàng)建NotifyIcon對象并設(shè)置其基本的屬性如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個菜單項對象,顯示文本分別為"顯示窗口"、"隱藏窗口"、"執(zhí)行程序"、"退出程序"
MenuItem menuItem1=new MenuItem("顯示窗口");
MenuItem menuItem2=new MenuItem("隱藏窗口");
MenuItem menuItem3=new MenuItem("執(zhí)行程序");
MenuItem menuItem4=new MenuItem("退出程序");
//分別為4個菜單項添加Click事件響應(yīng)函數(shù)
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);
//設(shè)置NotifyIcon對象的ContextMenu屬性為生面的彈出菜單對象
notifyIcon1.ContextMenu=new ContextMenu(new MenuItem[]{menuItem1,menuItem2,menuItem3,menuItem4});
//當用戶雙擊程序圖標時將執(zhí)行相應(yīng)的函數(shù)
notifyIcon1.DoubleClick+=new System.EventHandler(this.notifyIcon_DBClick);
}
private void menuItem1_Click(object sender,System.EventArgs e)//“顯示窗口”菜單的響應(yīng)方法
{
if(this.Visible==false)this.Visible=true;//假如當前窗口沒顯示則顯示當前窗口
}
private void menuItem2_Click(object sender,System.EventArgs e)//"隱藏窗口"菜單的響應(yīng)方法
{
if(this.Visible==true)this.Visible=false;//假如當前窗口為顯示的則隱藏窗口
}
private void menuItem3_Click(object sender,System.EventArgs e)//"執(zhí)行程序"菜單的響應(yīng)方法
{
//顯示一個提示信息框,表示事件已經(jīng)得到響應(yīng)
MessageBox.Show("演示程序已經(jīng)執(zhí)行,此處功能就是顯示一個提示框!","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
private void menuItem4_Click(object sender,System.EventArgs e)//“退出程序”菜單的響應(yīng)方法
{
this.Close();//關(guān)閉當前對象(即窗體)
Application.Exit();//通過Application類的靜態(tài)方法Exit()退出應(yīng)用程序
}
private void button1_Click(object sender, System.EventArgs e)//用戶單擊按鈕時的響應(yīng)方法
{
this.Visible=false;//隱藏當前主窗口
}
private void notifyIcon_DBClick(object sender, System.EventArgs e)//用戶雙擊應(yīng)用程序圖標進的響應(yīng)方法
{
this.Visible=true;//顯示當前主窗口
}
}
四、程序運行
運行程序,將顯示一個主窗口,此時還可以看到在任務(wù)欄上面多了一個圖標。當鼠標移到其上停留一下時,將顯示一個簡單的提示信息,點擊窗口上的“隱藏窗口”按鈕將隱藏主窗口,如下圖所示:
在圖標上點擊鼠標右鍵將顯示一個彈出菜單,此時可以選擇相應(yīng)的菜單執(zhí)行相應(yīng)的功能如“顯示窗口”、“隱藏窗口”、“退出程序等”,如下圖所示:
例如,在彈出的菜單中點擊“執(zhí)行程序”將信息一個信息提示框,如下圖所示:
您可能感興趣的文章:
- C#實現(xiàn)托盤程序并禁止多個應(yīng)用實例運行的方法
- C#實現(xiàn)系統(tǒng)托盤通知的方法
- C#程序最小化到托盤圖標操作步驟與實現(xiàn)代碼
- c# 托盤雙擊不觸發(fā)單擊事件的實現(xiàn)方法
- C# WinForm窗口最小化到系統(tǒng)托盤
- C#怎樣才能實現(xiàn)窗體最小化到托盤呢?
- C#中如何獲取文件圖標
- C#實現(xiàn)用戶自定義控件中嵌入自己的圖標
- C#實現(xiàn)帶消息數(shù)的App圖標
- C#禁用雙擊窗體圖標關(guān)閉窗體的方法
- C#實現(xiàn)WinForm禁止最大化、最小化、雙擊標題欄、雙擊圖標等操作的方法
- C#實現(xiàn)位圖轉(zhuǎn)換成圖標的方法
- C#實現(xiàn)閃動托盤圖標效果的方法
相關(guān)文章
C#調(diào)用Windows的API實現(xiàn)窗體動畫
在VF、VB、PB的應(yīng)用中,有些無法通過語言工具本身來完成的或者做得不理想的功能,我們會考慮通過Windows的API來完成。本文就來通過調(diào)用Windows的API實現(xiàn)窗體動畫,感興趣的可以嘗試一下2022-11-11C#使用itextsharp生成PDF文件的實現(xiàn)代碼
以下是對在C#中使用itextsharp生成PDF文件的實現(xiàn)代碼進行了詳細分析介紹,需要的朋友可以過來參考下2013-07-07使用C#實現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的基本示例
這篇文章主要介紹了使用C#實現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的示例,文中分別編寫了基本的服務(wù)器端和客戶端,代碼十分簡單,需要的朋友可以參考下2016-04-04