激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#實現閃動托盤圖標效果的方法

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

2021-11-24 13:31冇一朵小尐尒尕尗尛尜 C#

這篇文章主要介紹了C#實現閃動托盤圖標效果的方法,涉及C# ImageList控件的使用技巧,需要的朋友可以參考下

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
/// <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)定時器事件實現圖標的切換

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/// <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 事件,釋放與此窗體關聯的所有資源。因此需要取消關閉事件,實現窗體的隱藏和托盤的顯示功能。

?
1
2
3
4
5
6
7
8
9
10
11
/// <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)托盤關聯菜單有四個功能:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
主站蜘蛛池模板: 国产一区毛片 | 国产理论视频在线观看 | 久草在线手机视频 | 香蕉黄色网| 性感美女一级毛片 | 久久精品中文字幕一区 | 一级在线 | 91久久另类重口变态 | 国产精品资源手机在线播放 | 久久免费视频精品 | 成人福利网 | 蜜桃91丨九色丨蝌蚪91桃色 | 久久精品国产精品亚洲 | 美女扒开腿让男生桶爽网站 | 1级黄色毛片 | 久久精品国产亚洲7777 | 欧美成人福利 | 日韩做爰视频免费 | 毛片118极品美女写真 | 污黄视频在线播放 | 九九热精品视频在线播放 | 肉文女配h | 一级黄色av电影 | 国产一区二区不卡 | 91精品国产乱码久久桃 | 成人毛片免费 | wwwxxx免费视频 | 精品久久久久久久久亚洲 | 欧美成人午夜一区二区三区 | 成人午夜淫片a | 国内精品免费一区二区2001 | 亚州综合一区 | 欧美aaaaa一级毛片在线 | 亚洲精品成人在线视频 | 色屁屁xxxxⅹ免费视频 | a网在线| 欧美一二在线 | 精品国产一区二区三区四 | 国产成人精品午夜视频' | 国产精品亚洲综合一区二区三区 | www国产成人免费观看视频 |