首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

WinForm 實現最小化至系統托盤的完整教學與範例

     編輯:更多程式設計知識

在開發 Windows 桌面應用程式時,將視窗最小化到系統托盤(System Tray)是常見的使用者體驗需求。這不僅能節省工作列空間,也能讓程式持續在背景運作。本文將詳細說明如何在 C# WinForm 專案中使用 NotifyIcon 元件實現此功能,並提供完整的程式碼範例供參考。

核心元件:NotifyIcon

NotifyIcon 是 WinForm 專門用於在系統托盤顯示圖示的元件。它位於工具箱的「元件」分類中,拖曳到表單後會顯示在設計介面底部的元件列。

實作步驟詳解

1. 建立專案與加入元件

  • 建立一個新的 Windows Forms 應用程式專案。
  • 從工具箱拖曳 NotifyIcon 元件至表單。
  • 設定屬性:Visible = false(預設隱藏)、Text 設定滑鼠懸停時顯示的提示文字、Icon 指定托盤顯示的圖示檔(.ico)。

2. 處理表單尺寸變更事件

當使用者點擊最小化按鈕時,攔截事件並隱藏表單、顯示托盤圖示:

private void Form1_SizeChanged(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        this.ShowInTaskbar = false; // 從工作列移除
        notifyIcon1.Visible = true; // 顯示托盤圖示
    }
}

3. 實現托盤圖示雙擊還原視窗

使用者雙擊托盤圖示時,將視窗還原並隱藏托盤圖示:

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

4. 進階:加入右鍵選單功能

為了提供更完整的互動,可以為托盤圖示加入右鍵選單(ContextMenu),包含「顯示視窗」與「退出系統」選項:

private ContextMenu notifyIconMenu;

private void InitializeNotifyIconMenu()
{
    MenuItem[] items = new MenuItem[3];
    items[0] = new MenuItem("顯示視窗");
    items[0].Click += notifyIcon_ShowForm;
    items[1] = new MenuItem("-"); // 分隔線
    items[2] = new MenuItem("退出系統");
    items[2].Click += ExitApplication;
    items[2].DefaultItem = true; // 粗體預設項目

    notifyIconMenu = new ContextMenu(items);
    notifyIcon1.ContextMenu = notifyIconMenu;
}

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

private void ExitApplication(object sender, EventArgs e)
{
    notifyIcon1.Visible = false;
    Application.Exit(); // 正確關閉應用程式
}

5. 完整整合範例

在表單的 Load 事件中呼叫 InitializeNotifyIconMenu(),並在 SizeChanged 事件中整合選單初始化邏輯,即可擁有一個功能完整的托盤最小化機制。

常見問題與注意事項

  • 圖示不顯示:確認 Icon 屬性已正確指定 .ico 檔案,且檔案已設為「複製到輸出目錄」。
  • 重複初始化選單:避免在 SizeChanged 中重複建立 ContextMenu,建議在 Load 時一次性初始化。
  • 應用程式無法完全關閉:使用 Application.Exit() 而非 this.Close(),確保所有執行緒與資源正確釋放。

掌握這項技巧,能讓你的 WinForm 應用程式更符合現代 Windows 應用的使用習慣,提升使用者體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved