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

首頁 > 編程 > C# > 正文

C#實現(xiàn)閃動托盤圖標效果的方法

2019-10-29 21:27:04
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C#實現(xiàn)閃動托盤圖標效果的方法,涉及C# ImageList控件的使用技巧,需要的朋友可以參考下
 

本文實例講述了C#實現(xiàn)閃動托盤圖標效果的方法。分享給大家供大家參考,具體如下:

在用戶正在登錄QQ或者使用Firemail郵件系統(tǒng)自動收取郵件的時候,托盤圖標會閃動提示用戶正在運行的任務。

閃動圖標可以使用定時切換托盤圖標的方式實現(xiàn),托盤圖標可以從ImageList控件中獲取。在ImageList控件里面添加三個icon,第一個icon表示窗體啟動以后的托盤圖標。第二個和第三個圖標分別表示當特定的任務發(fā)生的時候,定時切換的圖標。

(1)設置托盤的圖標可以從ImageList控件中的Image對象轉(zhuǎn)換為Icon對象

/// <summary>/// 設置托盤顯示的圖標/// </summary>/// <param name="index">圖像列表中圖片的索引</param>private void setIconImg(int index){  Image img = this.imgIcon.Images[index];  Bitmap b = new Bitmap(img);  Icon icon = Icon.FromHandle(b.GetHicon());  this.niMain.Icon = icon;}

(2)定時器事件實現(xiàn)圖標的切換

/// <summary>/// 定時器切換圖標顯示/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void tmrIcon_Tick(object sender, EventArgs e){  if (iconFlag)  {    this.setIconImg(1);    iconFlag = !iconFlag;  }  else  {    this.setIconImg(2);    iconFlag = !iconFlag;  }}

(3)窗體的最小化按鈕和關閉按鈕實現(xiàn)隱藏窗體的功能,窗體關閉時,會執(zhí)行FormClosing 事件,釋放與此窗體關聯(lián)的所有資源。因此需要取消關閉事件,實現(xiàn)窗體的隱藏和托盤的顯示功能。

/// <summary>/// 關閉窗體時隱藏窗體顯示托盤圖標/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void FrmMain_FormClosing(object sender, FormClosingEventArgs e){  e.Cancel = true;  this.Hide();  this.niMain.Visible = true;}

(4)托盤關聯(lián)菜單有四個功能:

① “顯示” :顯示主窗體、隱藏托盤圖標。
② “運行”:圖標閃動效果,模擬任務正在運行。
③ “停止”:恢復初始化的圖標,模擬任務停止。
④ “退出”:提示用戶并退出應用系統(tǒng)。
完整的代碼如下:

namespace NotifyIconDemo{  public partial class FrmMain : Form  {    //切換圖片的標識    private bool iconFlag = false;    //系統(tǒng)是否運行    private bool isRun = false;    /// <summary>    ///    /// </summary>    public FrmMain()    {      InitializeComponent();      //設置icon顯示的圖片      this.setIconImg(0);    }    /// <summary>    /// 設置托盤顯示的圖標    /// </summary>    /// <param name="index">圖像列表中圖片的索引</param>    private void setIconImg(int index)    {      Image img = this.imgIcon.Images[index];      Bitmap b = new Bitmap(img);      Icon icon = Icon.FromHandle(b.GetHicon());      this.niMain.Icon = icon;    }    /// <summary>    /// 顯示主窗體    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void tsmiMain_Click(object sender, EventArgs e)    {      //顯示主窗體      this.Visible = true;      this.WindowState = System.Windows.Forms.FormWindowState.Normal;      //隱藏托盤圖標      this.niMain.Visible = false;      this.Show();    }    /// <summary>    /// 退出    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void tsmiExit_Click(object sender, EventArgs e)    {      //設置托盤的提示信息      this.niMain.BalloonTipText = "成功退出Demo!";      this.niMain.BalloonTipTitle = "退出";      this.niMain.ShowBalloonTip(1000*3);      //延遲退出      Thread.Sleep(1000 * 2);      //釋放托盤圖標資源      this.niMain.Dispose();      //終止線程      Application.ExitThread();    }    /// <summary>    /// 最小化時隱藏窗體,顯示托盤圖標    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void FrmMain_SizeChanged(object sender, EventArgs e)    {      if (this.WindowState == FormWindowState.Minimized)      {        this.Hide();        this.niMain.Visible = true;      }    }    /// <summary>    /// 關閉窗體時隱藏窗體顯示托盤圖標    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)    {      e.Cancel = true;      this.Hide();      //this.ShowInTaskbar = false;//取消窗體在任務欄的顯示      this.niMain.Visible = true;    }    /// <summary>    /// 加載窗體時隱藏窗體    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void FrmMain_Load(object sender, EventArgs e)    {      this.Hide();    }    /// <summary>    /// 定時器切換圖標顯示    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void tmrIcon_Tick(object sender, EventArgs e)    {      if (!this.isRun)      {        return;      }      if (iconFlag)      {        this.setIconImg(1);        iconFlag = !iconFlag;      }      else      {        this.setIconImg(2);        iconFlag = !iconFlag;      }    }    /// <summary>    /// 點擊運行菜單    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void tsmiRun_Click(object sender, EventArgs e)    {      this.tsmiRun.Enabled = false;      this.tsmiStop.Enabled = true;      //設置運行狀態(tài)      this.isRun = true;    }    /// <summary>    /// 點擊停止菜單    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void tsmiStop_Click(object sender, EventArgs e)    {      this.tsmiRun.Enabled = true;      this.tsmiStop.Enabled = false;      //設置為停止狀態(tài)      this.isRun = false;      //恢復圖標顯示      this.setIconImg(0);    }  }}
 


注:相關教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沐川县| 祁连县| 江北区| 长海县| 东台市| 黎城县| 周至县| 腾冲县| 竹山县| 横峰县| 绥宁县| 麟游县| 基隆市| 柳河县| 南京市| 蕲春县| 景洪市| 内江市| 津市市| 阳信县| 广宁县| 萍乡市| 军事| 桃源县| 通道| 南宁市| 承德县| 连城县| 兴文县| 元阳县| 忻州市| 潜江市| 曲松县| 宁武县| 错那县| 东山县| 聂拉木县| 东至县| 荔波县| 竹北市| 阜平县|