《編寫C#程序?qū)崿F(xiàn)動態(tài)系統(tǒng)托盤圖標》由會員分享,可在線閱讀,更多相關(guān)《編寫C#程序?qū)崿F(xiàn)動態(tài)系統(tǒng)托盤圖標(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、文檔供參考,可復制、編制,期待您的好評與關(guān)注!
Visual C#是微軟公司推出的下一代程序開發(fā)語言,是微軟.Net框架中的的一個重要組成部分。微軟的.Net平臺堪稱為新一代的互聯(lián)網(wǎng)平臺。對于技術(shù)開發(fā)人員來說,.Net平臺的兩大特性是非常卓越的,首先是其所提供的公共語言運行時,也就是公用語言運行平臺,另一方面就是其龐大而全面的統(tǒng)一編程類。Visual C#就是通過調(diào)用這些類、對象來實現(xiàn)許多比較強大的功能。
本文通過向大家介紹一個.Net平臺上用C#寫的可以停放在任務(wù)欄上的圖標程序(類似于Flashget、OICQ那種系統(tǒng)托盤圖標)來和大家一起體驗一下用C#編程的樂趣。
2、 一、概述:
我這里所指的圖標程序是類似于在Windows中經(jīng)常接觸的停放在任務(wù)欄上,在后臺運行的病毒監(jiān)視、媒體播放等程序。它們一般都具有單擊顯示或隱藏主界面,擊右鍵彈出菜單,當鼠標停在圖標上時顯示提示信息的功能。
程序主要用到了一下幾個類:
System.Windows.Fomrs.NotifyIcon類
System.Windows.Forms.ContextMenu類
System.Windows.Forms.MenuItem類
System.Windows.Forms.Label類
System.Windows.Fo
3、rms.Timer類
二、程序設(shè)計和運行的環(huán)境:
?。?)微軟公司視窗2000服務(wù)器版或視窗XP版
?。?).Net FrameWrok SDK Beta 2版
三、具體實現(xiàn)步驟:
?。?).在Visual Studio下新建一個C#的工程,不妨命名為AnimateSystemTray。圖示如下:
?。?).現(xiàn)在我們來設(shè)計程序的主界面:
先將窗體的Text屬性設(shè)置為"動畫系統(tǒng)圖標示例",MaximiseBox、MinimiseBox、ShowInTaskbar屬性均設(shè)置為False。
再往窗體上添加Label控件、Noti
4、fyIcon控件、ContextMenu控件、Timer控件各一個。
將Label控件的Text屬性設(shè)置為"請右擊系統(tǒng)托盤圖標";將NotifyIcon控件的Icon屬性設(shè)置為一個圖標文件: ,Text屬性設(shè)置為"這是個示例程序!",ContextMenu屬性設(shè)置為"contextMenu1";接下來開始編輯ContextMenu控件,圖示如下:
最后還要在導入兩個圖標 (Icon1.ico), (Icon2.ico)文件到該項目。
?。?).現(xiàn)在我們開始編寫代碼部分:
首先在我們的類中添加以下數(shù)據(jù)成員:
private Icon m_Icon1
5、;
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
6、call
//
m_bFlag=true;
m_bShowWnd=true;
try
{
m_Icon1 = new Icon("Icon1.ico");//導入圖標文件
m_Icon2 = new Icon("Icon2.ico");
}
catch ( Exception e )
{
MessageBox.Show("Error " + e.Message,"Animate Tray - Error");
menuItem2.Enabled = false;
m
7、enuItem3.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)
{
ti
8、mer1.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_bSho
9、wWnd = false;
}
else//顯示主界面
{
this.Visible = true;
m_bShowWnd = true;
}
}
?詈蠡掛砑觮imer1的Tick()函數(shù):
private void timer1_Tick(object sender, System.EventArgs e)
{
if ( m_Icon1 != null && m_Icon2 != null ) //如果兩個圖標文件都被正確載入
{
//只要timer1被啟動,則
10、在兩個圖標之間不斷進行選擇變換,實現(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ù)欄上面多了一個圖標。當鼠標移到其上停留一下時,將顯示一個簡單的提示信息,點擊該圖標則將隱藏主窗口,單擊右鍵,出來一個菜單,選"動畫圖標開始"和"動畫圖標結(jié)束"可以控制圖標狀態(tài)。
四.總結(jié):
做完這個程序,我們不難發(fā)現(xiàn)用C#做一些運用程序效果是非常方便的。以前我在SDK、MFC下,用到了Shell_NotifyIcon()、TrackPopMenu()以及DestroyMenu(),還要自己添加消息處理函數(shù),工作量是非常大的?,F(xiàn)在微軟為我們做好了這些工作,是不是很方便?快快加入C#的行列吧。
5 / 5