国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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精品一区二区三区 | 亚洲精品一级 | 久久这里只有精品免费 | 午夜激情在线免费观看 | 国产成人网 | 一级黄色国产片 | 国产精品久久久久桃色tv | 精品亚洲一区二区 | 午夜精品久久久久久久 | 亚洲热视频在线观看 | 亚洲精品视频在线观看免费 | 国产精品1区2区3区 久久免费一区 | 精品国产91亚洲一区二区三区www | av中文字幕在线播放 | 美女黄18| 精品国产乱码久久久久久影片 | 性色好看的网站 | 国产精彩视频 | 开心久久婷婷综合中文字幕 | 中文字幕 视频一区 | 亚洲精品久久久久一区二区三区 | 一区二区三区av | 国产一区在线免费观看 | 日本在线视频一区二区 | 国产一区网站 | 久久亚洲视频 | 国产精品久久电影观看 | 日韩超碰在线观看 | 精品国产乱码久久久久久丨区2区 | 久久久久久久久久久久国产 | 日韩午夜| 精品国产91 | 免费在线观看黄色 | 亚洲国产精品久久久久 | 精品日韩一区 | 日韩精品在线观看免费 | 直接看av的网站 | 中国精品一区二区 |