麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

C#程序中實現動態系統托盤圖標

2023-05-10 18:49:28
字體:
來源:轉載
供稿:網友

本文通過向大家介紹一個.Net平臺上用C#寫的可以停放在任務欄上的圖標程序(類似于Flashget、OICQ那種系統托盤圖標)來和大家一起體驗一下用C#編程的樂趣。

一、概述:

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

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

System.Windows.Fomrs.NotifyIcon類
  System.Windows.Forms.ContextMenu類
  System.Windows.Forms.MenuItem類
  System.Windows.Forms.Label類
  System.Windows.Forms.Timer類

二、程序設計和運行的環境:

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

(2).Net FrameWrok SDK Beta 2版

三、具體實現步驟:

(1)在Visual Studio下新建一個C#的工程,不妨命名為AnimateSystemTray。

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

先將窗體的Text屬性設置為"動畫系統圖標示例",MaximiseBox、MinimiseBox、ShowInTaskbar屬性均設置為False。

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

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

最后還要在導入兩個圖標 (Icon1.ico), (Icon2.ico)文件到該項目。

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

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

private Icon m_Icon1;
  private Icon m_Icon2;
  private bool m_bFlag;
  private bool m_bShowWnd;

修改Form1()函數為:

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");//導入圖標文件
  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事件,消息處理函數如下:
  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();//退出應用程序
  }
  
  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()函數:
  
  private void timer1_Tick(object sender, System.EventArgs e)
  {
  if ( m_Icon1 != null && m_Icon2 != null ) //如果兩個圖標文件都被正確載入
  {
  //只要timer1被啟動,則在兩個圖標之間不斷進行選擇變換,實現動畫效果
  if ( m_bFlag == true )
  {
  m_trayIcon.Icon = m_Icon2;
  m_bFlag = false;
  }
  else
  {
  m_trayIcon.Icon = m_Icon1;
  m_bFlag = true;
  }
  }
  }
  按Ctrl+F5試試效果!
  
  運行程序,將顯示一個主窗口,此時還可以看到在任務欄上面多了一個圖標。當鼠標移到其上停留一下時,將顯示一個簡單的提示信息,點擊該圖標則將隱藏主窗口,單擊右鍵,出來一個菜單,選"動畫圖標開始"和"動畫圖標結束"可以控制圖標狀態。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 污片在线观看视频 | 日韩黄色精品 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 欧美成人免费小视频 | av在线播放电影 | 久久久久九九九女人毛片 | 国产精品啪一品二区三区粉嫩 | 成人免费入口 | 久久人人97超碰国产公开结果 | 视频一区二区久久 | 91精品国产乱码久久久久久久久 | av电影观看 | 热@国产 | 91羞羞| 亚洲网在线| 成人毛片视频免费 | 亚洲人成网在线观看 | 亚洲av一级毛片特黄大片 | 中午字幕无线码一区2020 | 99最新网址 | 无遮挡一级毛片视频 | 黄色免费高清网站 | 免费观看黄色一级视频 | 操操操操网 | 免费毛片观看 | 国产精品久久久久久久娇妻 | 午夜视频福利 | 亚洲男人的天堂在线视频 | 99精品视频免费看 | 国产精品自在线拍 | 欧美性色生活片免费播放 | 欧美三级美国一级 | 美女性感毛片 | 国产一区二区三区四区五区精品 | 国产精品久久久久久久久岛 | 美女擦逼 | 国产亚洲黑人性受xxxx精品 | 凹凸成人精品亚洲精品密奴 | qyl在线视频精品免费观看 | 国产精品69页 | www.mitao|