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

首頁 > 開發(fā) > 綜合 > 正文

C#下實現(xiàn)動態(tài)系統(tǒng)托盤圖標(biāo)

2024-07-21 02:26:48
字體:
供稿:網(wǎng)友
visual c#是微軟公司推出的下一代程序開發(fā)語言,是微軟.net框架中的的一個重要組成部分。微軟的.net平臺堪稱為新一代的互聯(lián)網(wǎng)平臺。對于技術(shù)開發(fā)人員來說,.net平臺的兩大特性是非常卓越的,首先是其所提供的公共語言運行時,也就是公用語言運行平臺,另一方面就是其龐大而全面的統(tǒng)一編程類。visual c#就是通過調(diào)用這些類、對象來實現(xiàn)許多比較強大的功能。

本文通過向大家介紹一個.net平臺上用c#寫的可以停放在任務(wù)欄上的圖標(biāo)程序(類似于flashget、oicq那種系統(tǒng)托盤圖標(biāo))來和大家一起體驗一下用c#編程的樂趣。



一、概述:


我這里所指的圖標(biāo)程序是類似于在windows中經(jīng)常接觸的停放在任務(wù)欄上,在后臺運行的病毒監(jiān)視、媒體播放等程序。它們一般都具有單擊顯示或隱藏主界面,擊右鍵彈出菜單,當(dāng)鼠標(biāo)停在圖標(biāo)上時顯示提示信息的功能。



程序主要用到了一下幾個類:

system.windows.fomrs.notifyicon類
system.windows.forms.contextmenu類
system.windows.forms.menuitem類
system.windows.forms.label類
system.windows.forms.timer類



二、程序設(shè)計和運行的環(huán)境:


(1)微軟公司視窗2000服務(wù)器版或視窗xp版

(2).net framewrok sdk beta 2版



三、具體實現(xiàn)步驟:


(1).在visual studio下新建一個c#的工程,不妨命名為animatesystemtray。圖示如下:


(2).現(xiàn)在我們來設(shè)計程序的主界面:

先將窗體的text屬性設(shè)置為"動畫系統(tǒng)圖標(biāo)示例",maximisebox、minimisebox、showintaskbar屬性均設(shè)置為false。

再往窗體上添加label控件、notifyicon控件、contextmenu控件、timer控件各一個。

將label控件的text屬性設(shè)置為"請右擊系統(tǒng)托盤圖標(biāo)";將notifyicon控件的icon屬性設(shè)置為一個圖標(biāo)文件: ,text屬性設(shè)置為"這是個示例程序!",contextmenu屬性設(shè)置為"contextmenu1";接下來開始編輯contextmenu控件,圖示如下:

最后還要在導(dǎo)入兩個圖標(biāo) (icon1.ico), (icon2.ico)文件到該項目。
(3).現(xiàn)在我們開始編寫代碼部分:

首先在我們的類中添加以下數(shù)據(jù)成員:

private icon m_icon1;
private icon m_icon2;
private bool m_bflag;
private bool m_bshowwnd;

修改form1()函數(shù)為:

public form1()
{
//
// required for windows form designer support
//
initializecomponent();
//
// todo: add any constructor code after initializecomponent call
//
m_bflag=true;
m_bshowwnd=true;

try
{
m_icon1 = new icon("icon1.ico");//導(dǎo)入圖標(biāo)文件
m_icon2 = new icon("icon2.ico");
}
catch ( exception e )
{
messagebox.show("error " + e.message,"animate tray - error");
menuitem2.enabled = false;
menuitem3.enabled = false;
}
}

添加menuitem1、menuitem2、menuitem3、m_trayicon的click事件,消息處理函數(shù)如下:
private void menuitem1_click(object sender, system.eventargs e)
{
timer1.start();//打開計時器
}

private void menuitem2_click(object sender, system.eventargs e)
{
timer1.stop();//停止計時器
}

private void menuitem3_click(object sender, system.eventargs e)
{
application.exit();//退出應(yīng)用程序
}

private void m_trayicon_click(object sender, system.eventargs e)
{
if(m_bshowwnd == true)//隱藏主界面
{
this.visible = false;
m_bshowwnd = false;
}
else//顯示主界面
{
this.visible = true;
m_bshowwnd = true;
}
}


最后還要添加timer1的tick()函數(shù):

private void timer1_tick(object sender, system.eventargs e)
{
if ( m_icon1 != null && m_icon2 != null ) //如果兩個圖標(biāo)文件都被正確載入
{
//只要timer1被啟動,則在兩個圖標(biāo)之間不斷進行選擇變換,實現(xiàn)動畫效果
if ( m_bflag == true )
{
m_trayicon.icon = m_icon2;
m_bflag = false;
}
else
{
m_trayicon.icon = m_icon1;
m_bflag = true;
}
}
}

好了,按ctrl+f5試試效果吧!

運行程序,將顯示一個主窗口,此時還可以看到在任務(wù)欄上面多了一個圖標(biāo)。當(dāng)鼠標(biāo)移到其上停留一下時,將顯示一個簡單的提示信息,點擊該圖標(biāo)則將隱藏主窗口,單擊右鍵,出來一個菜單,選"動畫圖標(biāo)開始"和"動畫圖標(biāo)結(jié)束"可以控制圖標(biāo)狀態(tài)。



四.總結(jié):


做完這個程序,我們不難發(fā)現(xiàn)用c#做一些運用程序效果是非常方便的。以前我在sdk、mfc下,用到了shell_notifyicon()、trackpopmenu()以及destroymenu(),還要自己添加消息處理函數(shù),工作量是非常大的。現(xiàn)在微軟為我們做好了這些工作,是不是很方便?快快加入c#的行列吧。

(責(zé)任編輯 尤北 [email protected]taff.ccidnet.com
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金华市| 南木林县| 镇雄县| 和硕县| 阳城县| 即墨市| 徐州市| 卓资县| 略阳县| 观塘区| 同仁县| 罗甸县| 甘洛县| 巧家县| 西华县| 高清| 盱眙县| 张北县| 汶上县| 虎林市| 湟中县| 正蓝旗| 靖江市| 蓬莱市| 白玉县| 若尔盖县| 汾阳市| 福州市| 麻江县| 鲁山县| 芜湖县| 磐安县| 特克斯县| 滦平县| 荥经县| 滦南县| 固镇县| 大埔区| 中山市| 尉氏县| 临泉县|