NotifyIcon類(lèi)介紹 NotifyIcon 是 .NET中的一個(gè)類(lèi),它用于在系統(tǒng)托盤(pán)中顯示圖標(biāo)。這個(gè)類(lèi)在 System.Windows.Forms 命名空間下。使用 NotifyIcon 類(lèi),你可以在系統(tǒng)托盤(pán)中創(chuàng)建一個(gè)圖標(biāo),當(dāng)用戶(hù)點(diǎn)擊或右鍵點(diǎn)擊這個(gè)圖標(biāo)時(shí),可以觸發(fā)一些事件。例如,你可以創(chuàng)建一個(gè)上下文菜單(右鍵菜單),或者當(dāng)用戶(hù)雙擊圖標(biāo)時(shí)打開(kāi)一個(gè)窗口。
示例 通過(guò)設(shè)計(jì)頁(yè)面使用
在設(shè)計(jì)頁(yè)面中拖拽添加NotifyIcon:
進(jìn)行相關(guān)設(shè)置(在后面通過(guò)代碼使用時(shí)會(huì)進(jìn)行介紹):
這里的contextMenuStrip1也是由自己拖拽來(lái)的:
設(shè)置contextMenuStrip1:
重寫(xiě)窗體關(guān)閉事件處理程序:
protected override void OnFormClosing (FormClosingEventArgs e) { if (e.CloseReason == CloseReason.UserClosing) { e.Cancel = true ; // 取消關(guān)閉窗體 this .Hide(); // 隱藏窗體 this .notifyIcon1.Visible = true ; // 顯示托盤(pán)圖標(biāo) } }
雙擊notifyIcon1寫(xiě)鼠標(biāo)雙擊事件處理程序:
private void notifyIcon1_MouseDoubleClick ( object sender, MouseEventArgs e) { this .Show(); // 顯示窗體 this .WindowState = FormWindowState.Normal; // 恢復(fù)窗體正常大小 this .notifyIcon1.Visible = false ; // 隱藏托盤(pán)圖標(biāo) }
雙擊顯示窗體按鈕,寫(xiě)點(diǎn)擊事件處理程序:
private void 顯示 ToolStripMenuItem_Click( object sender, EventArgs e) { this .Show(); // 顯示窗體 this .WindowState = FormWindowState.Normal; // 恢復(fù)窗體正常大小 this .notifyIcon1.Visible = false ; // 隱藏托盤(pán)圖標(biāo) }
雙擊顯示氣泡按鈕,寫(xiě)點(diǎn)擊事件處理程序:
private void 顯示氣泡 2 ToolStripMenuItem_Click( object sender, EventArgs e) { // 顯示氣泡提示,參數(shù)表示提示顯示的時(shí)間(單位:毫秒) notifyIcon1.ShowBalloonTip(3000 ); }
雙擊退出按鈕,寫(xiě)點(diǎn)擊事件處理程序:
private void 退出 ToolStripMenuItem_Click( object sender, EventArgs e) { Application.Exit(); // 退出應(yīng)用程序 }
查看實(shí)現(xiàn)效果:
winform實(shí)現(xiàn)最小至系統(tǒng)托盤(pán)效果 全部代碼:
namespace Minimized_to_the_system_tray_demo { public partial class Form1 : Form { public Form1 () { InitializeComponent(); } private void Form1_Load (object sender, EventArgs e ) { } protected override void OnFormClosing (FormClosingEventArgs e ) { if (e.CloseReason == CloseReason.UserClosing) { e.Cancel = true ; // 取消關(guān)閉窗體 this .Hide(); // 隱藏窗體 this .notifyIcon1.Visible = true ; // 顯示托盤(pán)圖標(biāo) } } private void notifyIcon1_MouseDoubleClick (object sender, MouseEventArgs e ) { this .Show(); // 顯示窗體 this .WindowState = FormWindowState.Normal; // 恢復(fù)窗體正常大小 this .notifyIcon1.Visible = false ; // 隱藏托盤(pán)圖標(biāo) } private void 顯示 ToolStripMenuItem_Click( object sender, EventArgs e) { this .Show(); // 顯示窗體 this .WindowState = FormWindowState.Normal; // 恢復(fù)窗體正常大小 this .notifyIcon1.Visible = false ; // 隱藏托盤(pán)圖標(biāo) } private void 退出 ToolStripMenuItem_Click( object sender, EventArgs e) { Application.Exit(); // 退出應(yīng)用程序 } private void 顯示氣泡 2 ToolStripMenuItem_Click( object sender, EventArgs e) { // 顯示氣泡提示,參數(shù)表示提示顯示的時(shí)間(單位:毫秒) notifyIcon1.ShowBalloonTip( 3000 ); } } }
通過(guò)代碼實(shí)現(xiàn)
首先全局聲明一個(gè)NotifyIcon對(duì)象與一個(gè)ContextMenuStrip對(duì)象:
private NotifyIcon notifyIcon1; private ContextMenuStrip menuStrip;
menuStrip的相關(guān)設(shè)置:
// 創(chuàng)建 ContextMenuStrip 。 this .menuStrip = new ContextMenuStrip(); // 創(chuàng)建并初始化 ToolStripMenuItem 對(duì)象。 ToolStripMenuItem item1 = new ToolStripMenuItem( " 顯示窗體 " ); item1.Click += ( object ? sender, EventArgs e) => { this .Show(); // 顯示窗體 this .WindowState = FormWindowState.Normal; // 恢復(fù)窗體正常大小 this .notifyIcon1.Visible = false ; // 隱藏托盤(pán)圖標(biāo) }; ToolStripMenuItem item2 = new ToolStripMenuItem( " 顯示氣泡 " ); item2.Click += ( object ? sender, EventArgs e) => { // 顯示氣泡提示,參數(shù)表示提示顯示的時(shí)間(單位:毫秒) notifyIcon1.ShowBalloonTip( 3000 ); }; ToolStripMenuItem item3 = new ToolStripMenuItem( " 退出 " ); item3.Click += ( object ? sender, EventArgs e) => { Application.Exit(); // 退出應(yīng)用程序 }; // 將 ToolStripMenuItem 對(duì)象添加到 ContextMenuStrip 的 Items 集合中。 this .menuStrip.Items.Add(item1); this .menuStrip.Items.Add(item2); this .menuStrip.Items.Add(item3);
notifyIcon1的相關(guān)設(shè)置:
// 創(chuàng)建 NotifyIcon 。 this .notifyIcon1 = new NotifyIcon(); // Icon 屬性設(shè)置將在系統(tǒng)托盤(pán)中顯示的圖標(biāo)。 notifyIcon1.Icon = new Icon( " 你的 ico 圖標(biāo)路徑 " "); // ContextMenu 屬性設(shè)置當(dāng)右鍵點(diǎn)擊系統(tǒng)托盤(pán)圖標(biāo)時(shí)顯示的菜單。 notifyIcon1.ContextMenuStrip = this.menuStrip; // Text 屬性設(shè)置當(dāng)鼠標(biāo)懸停在系統(tǒng)托盤(pán)圖標(biāo)上時(shí)顯示的提示文本。 notifyIcon1.Text = "最小化至系統(tǒng)托盤(pán)示例程序 "; notifyIcon1.Visible = true; // 氣泡提示相關(guān)設(shè)置 notifyIcon1.BalloonTipIcon = ToolTipIcon.Info; notifyIcon1.BalloonTipTitle = "提示 "; notifyIcon1.BalloonTipText = " 您有一條新消息 "; // 注冊(cè)鼠標(biāo)雙擊事件 notifyIcon1.MouseDoubleClick += NotifyIcon1_MouseDoubleClick;
notifyIcon1鼠標(biāo)雙擊事件處理程序:
private void NotifyIcon1_MouseDoubleClick (object ? sender, MouseEventArgs e ) { this .Show(); // 顯示窗體 this .WindowState = FormWindowState.Normal; // 恢復(fù)窗體正常大小 this .notifyIcon1.Visible = false ; // 隱藏托盤(pán)圖標(biāo) }
重寫(xiě)窗體關(guān)閉事件處理程序:
protected override void OnFormClosing (FormClosingEventArgs e ) { if (e.CloseReason == CloseReason.UserClosing) { e.Cancel = true ; // 取消關(guān)閉窗體 this .Hide(); // 隱藏窗體 this .notifyIcon1.Visible = true ; // 顯示托盤(pán)圖標(biāo) } }
實(shí)現(xiàn)效果與上述相同。
全部代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Minimized_to_the_system_tray_demo { public partial class Form2 : Form { private NotifyIcon notifyIcon1; private ContextMenuStrip menuStrip; public Form2 () { InitializeComponent(); // 創(chuàng)建 NotifyIcon 。 this .notifyIcon1 = new NotifyIcon(); // 創(chuàng)建 ContextMenuStrip 。 this .menuStrip = new ContextMenuStrip(); // 創(chuàng)建并初始化 ToolStripMenuItem 對(duì)象。 ToolStripMenuItem item1 = new ToolStripMenuItem( " 顯示窗體 " ); item1.Click += ( object ? sender, EventArgs e) => { this .Show(); // 顯示窗體 this .WindowState = FormWindowState.Normal; // 恢復(fù)窗體正常大小 this .notifyIcon1.Visible = false ; // 隱藏托盤(pán)圖標(biāo) }; ToolStripMenuItem item2 = new ToolStripMenuItem( " 顯示氣泡 " ); item2.Click += ( object ? sender, EventArgs e) => { // 顯示氣泡提示,參數(shù)表示提示顯示的時(shí)間(單位:毫秒) notifyIcon1.ShowBalloonTip( 3000 ); }; ToolStripMenuItem item3 = new ToolStripMenuItem( " 退出 " ); item3.Click += ( object ? sender, EventArgs e) => { Application.Exit(); // 退出應(yīng)用程序 }; // 將 ToolStripMenuItem 對(duì)象添加到 ContextMenuStrip 的 Items 集合中。 this .menuStrip.Items.Add(item1); this .menuStrip.Items.Add(item2); this .menuStrip.Items.Add(item3); // Icon 屬性設(shè)置將在系統(tǒng)托盤(pán)中顯示的圖標(biāo)。 notifyIcon1.Icon = new Icon( " 你的 ico 圖標(biāo)路徑 " ); // ContextMenu 屬性設(shè)置當(dāng)右鍵點(diǎn)擊系統(tǒng)托盤(pán)圖標(biāo)時(shí)顯示的菜單。 notifyIcon1.ContextMenuStrip = this .menuStrip; // Text 屬性設(shè)置當(dāng)鼠標(biāo)懸停在系統(tǒng)托盤(pán)圖標(biāo)上時(shí)顯示的提示文本。 notifyIcon1.Text = " 最小化至系統(tǒng)托盤(pán)示例程序 " ; notifyIcon1.Visible = true ; notifyIcon1.BalloonTipIcon = ToolTipIcon.Info; notifyIcon1.BalloonTipTitle = " 提示 " ; notifyIcon1.BalloonTipText = " 您有一條新消息 " ; notifyIcon1.MouseDoubleClick += NotifyIcon1_MouseDoubleClick; } private void NotifyIcon1_MouseDoubleClick (object ? sender, MouseEventArgs e ) { this .Show(); // 顯示窗體 this .WindowState = FormWindowState.Normal; // 恢復(fù)窗體正常大小 this .notifyIcon1.Visible = false ; // 隱藏托盤(pán)圖標(biāo) } private void Form2_Load (object sender, EventArgs e ) { } protected override void OnFormClosing (FormClosingEventArgs e ) { if (e.CloseReason == CloseReason.UserClosing) { e.Cancel = true ; // 取消關(guān)閉窗體 this .Hide(); // 隱藏窗體 this .notifyIcon1.Visible = true ; // 顯示托盤(pán)圖標(biāo) } } } }
該文章在 2024/3/8 15:17:09 編輯過(guò)