首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# WinForms 系統托盤最小化:NotifyIcon 完整實作與右鍵選單整合

     編輯:關於C#

需求

  • 視窗最小化 → 隱藏工作列、顯示系統托盤圖示
  • 點擊托盤圖示 → 還原視窗、隱藏圖示
  • 托盤圖示右鍵選單支援額外功能 (如開啟、退出)

步驟總覽

  1. 表單屬性 ShowInTaskbar = false (最小化時不佔工作列)
  2. 工具箱拖入 NotifyIcon (命名 notifyIcon1),設定 Icon 屬性
  3. 訂閱 Form.SizeChanged 事件處理最小化邏輯
  4. 訂閱 NotifyIcon.Click (或 DoubleClick) 還原視窗
  5. 拖入 ContextMenuStrip 關聯 NotifyIcon.ContextMenuStrip

完整代碼

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        // 1. 表單屬性
        this.ShowInTaskbar = false;

        // 2. NotifyIcon 圖示已在設計器設定
        // 3. ContextMenuStrip 已關聯 notifyIcon1.ContextMenuStrip

        // 事件訂閱 (設計器自動產生於 InitializeComponent)
        this.SizeChanged += MainForm_SizeChanged;
        notifyIcon1.Click += NotifyIcon1_Click;
    }

    private void MainForm_SizeChanged(object sender, EventArgs e)
    {
        if (this.WindowState == FormWindowState.Minimized)
        {
            this.Hide();                    // 隱藏視窗
            notifyIcon1.Visible = true;     // 顯示托盤圖示
        }
    }

    private void NotifyIcon1_Click(object sender, EventArgs e)
    {
        this.Visible = true;
        this.WindowState = FormWindowState.Normal;
        notifyIcon1.Visible = false;
    }

    // ContextMenuStrip 項目事件範例
    private void mnuOpen_Click(object sender, EventArgs e)
    {
        NotifyIcon1_Click(sender, e); // 復用還原邏輯
    }

    private void mnuExit_Click(object sender, EventArgs e)
    {
        notifyIcon1.Visible = false; // 隱藏圖示後再關閉
        Application.Exit();
    }
}

設計器自動產生的關鍵初始化 (參考)

// InitializeComponent 片段
this.notifyIcon1 = new NotifyIcon(this.components);
this.notifyIcon1.Icon = ((Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "我的應用程式";
this.notifyIcon1.Visible = false;
this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;

// ContextMenuStrip
this.contextMenuStrip1.Items.AddRange(new ToolStripItem[] {
    this.mnuOpen, this.mnuExit });
this.mnuOpen.Text = "開啟主視窗";
this.mnuExit.Text = "退出程式";

進階提示

  • 使用 DoubleClick 而非 Click 避免單擊氣泡提示時誤觸發
  • NotifyIcon.BalloonTipText/Title/Icon 可顯示氣泡通知
  • 應用程式結束前務必 notifyIcon1.Visible = false,否則圖示殘留托盤需重啟 explorer.exe 清除
  • 若需開機自動啟動至托盤,在 Program.cs 中直接 Application.Run(new MainForm()),表單建構子設定 WindowState = FormWindowState.Minimized 並 Hide()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved