熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#下實現動態系統托盤圖標

2022-06-13   來源: .NET編程 

  概述

  我這裡所指的圖標程序是類似於在Windows中經常接觸的停放在任務欄上在後台運行的病毒監視媒體播放等程序它們一般都具有單擊顯示或隱藏主界面擊右鍵彈出菜單當鼠標停在圖標上時顯示提示信息的功能

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

  SystemWindowsFomrsNotifyIcon類

  SystemWindowsFormsContextMenu類

  SystemWindowsFormsMenuItem類

  SystemWindowsFormsLabel類

  SystemWindowsFormsTimer類

  程序設計和運行的環境

  ()微軟公司視窗服務器版或視窗XP版

  (Net FrameWrok SDK Beta

  具體實現步驟

  ()在Visual Studio下新建一個C#的工程不妨命名為AnimateSystemTray圖示如下

  ()現在我們來設計程序的主界面

  先將窗體的Text屬性設置為動畫系統圖標示例MaximiseBoxMinimiseBoxShowInTaskbar屬性均設置為False

  再往窗體上添加Label控件NotifyIcon控件ContextMenu控件Timer控件各一個

  將Label控件的Text屬性設置為請右擊系統托盤圖標將NotifyIcon控件的Icon屬性設置為一個圖標文件 Text屬性設置為這是個示例程序!ContextMenu屬性設置為contextMenu接下來開始編輯ContextMenu控件圖示如下

  最後還要在導入兩個圖標 (Iconico) (Iconico)文件到該項目

  ()現在我們開始編寫代碼部分

  首先在我們的類中添加以下數據成員

  private Icon m_Icon;

  private Icon m_Icon;

  private bool m_bFlag;

  private bool m_bShowWnd;

  修改Form()函數為

  public Form(){

  //// Required for Windows Form Designer support

  //InitializeComponent();

  //// TODO: Add any constructor code after InitializeComponent call

  //m_bFlag=true;m_bShowWnd=true;try{m_Icon = new Icon(Iconico);

  //導入圖標文件m_Icon = new Icon(Iconico);}catch ( Exception e )

  {

  MessageBoxShow(Error + eMessageAnimate Tray Error);

  menuItemEnabled = false;menuItemEnabled = false;

  }

  }

  添加menuItemmenuItemmenuItemm_trayIcon的Click事件消息處理函數如下

  private void menuItem_Click(object sender SystemEventArgs e)

  {

  timerStart();

  //打開計時器}private void menuItem_Click(object sender SystemEventArgs e)

  {

  timerStop();

  //停止計時器}

  private void menuItem_Click(object sender SystemEventArgs e){ApplicationExit();

  //退出應用程序}private void m_trayIcon_Click(object sender SystemEventArgs e)

  {

  if(m_bShowWnd == true)

  //隱藏主界面{thisVisible = false;m_bShowWnd = false;

  }

  else

  //顯示主界面{thisVisible = true;m_bShowWnd = true;

  }

  }

  最後還要添加timer的Tick()函數

  private void timer_Tick(object sender SystemEventArgs e)

  {

  if ( m_Icon != null && m_Icon != null )

  //如果兩個圖標文件都被正確載入

  {

  //只要timer被啟動則在兩個圖標之間不斷進行選擇變換實現動畫效果

  if ( m_bFlag == true )

  {m_trayIconIcon = m_Icon;m_bFlag = false;

  }

  else

  {

  m_trayIconIcon = m_Icon;m_bFlag = true;

  }

  }

  }

  好了按Ctrl+F試試效果吧!

  運行程序將顯示一個主窗口此時還可以看到在任務欄上面多了一個圖標當鼠標移到其上停留一下時將顯示一個簡單的提示信息點擊該圖標則將隱藏主窗口單擊右鍵出來一個菜單動畫圖標開始動畫圖標結束可以控制圖標狀態

  總結

  做完這個程序我們不難發現用C#做一些運用程序效果是非常方便的以前我在SDKMFC下用到了Shell_NotifyIcon()TrackPopMenu()以及DestroyMenu()還要自己添加消息處理函數工作量是非常大的現在微軟為我們做好了這些工作是不是很方便?快快加入C#的行列吧!


From:http://tw.wingwit.com/Article/program/net/201311/12946.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.