欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)閃動(dòng)托盤(pán)圖標(biāo)效果的方法

 更新時(shí)間:2016年06月03日 11:58:36   作者:冇一朵小尐尒尕尗尛尜  
這篇文章主要介紹了C#實(shí)現(xiàn)閃動(dòng)托盤(pán)圖標(biāo)效果的方法,涉及C# ImageList控件的使用技巧,需要的朋友可以參考下

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

在用戶正在登錄QQ或者使用Firemail郵件系統(tǒng)自動(dòng)收取郵件的時(shí)候,托盤(pán)圖標(biāo)會(huì)閃動(dòng)提示用戶正在運(yùn)行的任務(wù)。

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

(1)設(shè)置托盤(pán)的圖標(biāo)可以從ImageList控件中的Image對(duì)象轉(zhuǎn)換為Icon對(duì)象

/// <summary>
/// 設(shè)置托盤(pán)顯示的圖標(biāo)
/// </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)定時(shí)器事件實(shí)現(xiàn)圖標(biāo)的切換

/// <summary>
/// 定時(shí)器切換圖標(biāo)顯示
/// </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)窗體的最小化按鈕和關(guān)閉按鈕實(shí)現(xiàn)隱藏窗體的功能,窗體關(guān)閉時(shí),會(huì)執(zhí)行FormClosing 事件,釋放與此窗體關(guān)聯(lián)的所有資源。因此需要取消關(guān)閉事件,實(shí)現(xiàn)窗體的隱藏和托盤(pán)的顯示功能。

/// <summary>
/// 關(guān)閉窗體時(shí)隱藏窗體顯示托盤(pán)圖標(biāo)
/// </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)托盤(pán)關(guān)聯(lián)菜單有四個(gè)功能:

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

namespace NotifyIconDemo
{
  public partial class FrmMain : Form
  {
    //切換圖片的標(biāo)識(shí)
    private bool iconFlag = false;
    //系統(tǒng)是否運(yùn)行
    private bool isRun = false;
    /// <summary>
    ///
    /// </summary>
    public FrmMain()
    {
      InitializeComponent();
      //設(shè)置icon顯示的圖片
      this.setIconImg(0);
    }
    /// <summary>
    /// 設(shè)置托盤(pán)顯示的圖標(biāo)
    /// </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;
      //隱藏托盤(pán)圖標(biāo)
      this.niMain.Visible = false;
      this.Show();
    }
    /// <summary>
    /// 退出
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void tsmiExit_Click(object sender, EventArgs e)
    {
      //設(shè)置托盤(pán)的提示信息
      this.niMain.BalloonTipText = "成功退出Demo!";
      this.niMain.BalloonTipTitle = "退出";
      this.niMain.ShowBalloonTip(1000*3);
      //延遲退出
      Thread.Sleep(1000 * 2);
      //釋放托盤(pán)圖標(biāo)資源
      this.niMain.Dispose();
      //終止線程
      Application.ExitThread();
    }
    /// <summary>
    /// 最小化時(shí)隱藏窗體,顯示托盤(pán)圖標(biāo)
    /// </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>
    /// 關(guān)閉窗體時(shí)隱藏窗體顯示托盤(pán)圖標(biāo)
    /// </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;//取消窗體在任務(wù)欄的顯示
      this.niMain.Visible = true;
    }
    /// <summary>
    /// 加載窗體時(shí)隱藏窗體
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void FrmMain_Load(object sender, EventArgs e)
    {
      this.Hide();
    }
    /// <summary>
    /// 定時(shí)器切換圖標(biāo)顯示
    /// </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>
    /// 點(diǎn)擊運(yùn)行菜單
    /// </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;
      //設(shè)置運(yùn)行狀態(tài)
      this.isRun = true;
    }
    /// <summary>
    /// 點(diǎn)擊停止菜單
    /// </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;
      //設(shè)置為停止?fàn)顟B(tài)
      this.isRun = false;
      //恢復(fù)圖標(biāo)顯示
      this.setIconImg(0);
    }
  }
}

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《C#常見(jiàn)控件用法教程》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》及《C#程序設(shè)計(jì)之線程使用技巧總結(jié)

希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論