程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#完成明滅托盤圖標後果的辦法

C#完成明滅托盤圖標後果的辦法

編輯:C#入門知識

C#完成明滅托盤圖標後果的辦法。本站提示廣大學習愛好者:(C#完成明滅托盤圖標後果的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成明滅托盤圖標後果的辦法正文


本文實例講述了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#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved