欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁 > 軟件編程 > C#教程 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊: 次

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

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

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

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

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

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

/// <summary>
/// 關(guā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)托盤關(guān)聯(lián)菜單有四個功能:

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

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

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

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

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有