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

首頁 > 編程 > C# > 正文

C#實現閃動托盤圖標效果的方法

2020-01-24 01:07:56
字體:
來源:轉載
供稿:網友

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

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

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

(1)設置托盤的圖標可以從ImageList控件中的Image對象轉換為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)定時器事件實現圖標的切換

/// <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)窗體的最小化按鈕和關閉按鈕實現隱藏窗體的功能,窗體關閉時,會執行FormClosing 事件,釋放與此窗體關聯的所有資源。因此需要取消關閉事件,實現窗體的隱藏和托盤的顯示功能。

/// <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)托盤關聯菜單有四個功能:

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

namespace NotifyIconDemo{  public partial class FrmMain : Form  {    //切換圖片的標識    private bool iconFlag = false;    //系統是否運行    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;      //設置運行狀態      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;      //設置為停止狀態      this.isRun = false;      //恢復圖標顯示      this.setIconImg(0);    }  }}

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#常見控件用法教程》、《C#數據結構與算法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 佛山市| 克什克腾旗| 镇赉县| 镇远县| 封丘县| 内乡县| 北海市| 会同县| 北辰区| 明星| 宜丰县| 永和县| 铜山县| 丹巴县| 叶城县| 威信县| 时尚| 固原市| 洛川县| 蒙山县| 洪洞县| 延津县| 格尔木市| 辉县市| 九龙坡区| 衡东县| 文安县| 阳西县| 吴旗县| 新巴尔虎右旗| 平利县| 西安市| 永胜县| 南召县| 启东市| 三明市| 雅江县| 鹿泉市| 苍山县| 巫山县| 威信县|