<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      WPF應用最小化到系統托盤

      前言

      在現代桌面應用開發中,系統托盤(System Tray)功能已經成為用戶體驗的重要組成部分。特別是對于需要長時間運行的應用程序,如即時通訊工具、音樂播放器、系統監控工具等,最小化到系統托盤不僅可以節省任務欄空間,還能讓應用在后臺持續運行,隨時為用戶提供服務。

      本文以Rouyan這個WPF應用為例,說明在WPF中如何實現最小化到系統托盤。

      選擇

      在WPF中實現系統托盤功能,開發者通常有以下幾種選擇:

      1、System.Windows.Forms.NotifyIcon:最傳統的方式,需要引用WinForms

      2、Hardcodet.NotifyIcon.Wpf:專為WPF設計的托盤組件

      3、H.NotifyIcon.Wpf:Hardcodet的現代維護版本

      這里我選擇的是H.NotifyIcon.Wpf,選擇H.NotifyIcon.Wpf的優勢:

      1、現代化維護:相比原版Hardcodet,H.NotifyIcon.Wpf有更活躍的維護和bug修復

      2、完全兼容:保留了原版的API和XAML命名空間,遷移成本為零

      3、WPF原生:無需引入WinForms依賴,與WPF的數據綁定和樣式系統完美集成

      4、功能豐富:支持氣泡提示、上下文菜單、多種鼠標事件等

      H.NotifyIcon.Wpf項目地址:https://github.com/HavenDV/H.NotifyIcon

      使用

      先描述一下,我們想要實現的效果,我想要點擊最小化與關閉的時候,讓這個應用最小化到系統托盤,然后點擊系統托盤的圖標顯示這個應用,或者右鍵系統托盤的圖標,有兩個選項,一個是顯示窗口,一個是退出,點擊退出才真的退出程序。

      第一步安裝nuget包:

      第二步在主窗口中添加控件:

      先添加xmlns:tb="http://www.hardcodet.net/taskbar"StateChanged="Window_StateChanged"

       <!-- 系統托盤圖標 -->
       <tb:TaskbarIcon x:Name="TrayIcon"
                IconSource="/Assets/福州肉燕.ico"
                ToolTipText="Rouyan"
                TrayLeftMouseDown="TrayIcon_TrayLeftMouseDown">
           <tb:TaskbarIcon.ContextMenu>
               <ContextMenu>
                   <MenuItem Header="顯示窗口" Click="ShowWindow_Click"/>
                   <Separator/>
                   <MenuItem Header="退出" Click="ExitApp_Click"/>
               </ContextMenu>
           </tb:TaskbarIcon.ContextMenu>
       </tb:TaskbarIcon>
      

      ToolTipText是你鼠標懸浮在圖標那會出現的文字,TrayLeftMouseDown是鼠標左鍵點擊系統托盤圖標事件,ContextMenu是右鍵系統托盤圖標會出現的選項。

      現在在code-behind也就是主頁面的xaml.cs中寫這些事件處理程序即可。

      首先關閉應用時,讓其不關閉而是最小化:

      protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
      {
          e.Cancel = true;
          WindowState = WindowState.Minimized;
      }
      

      然后是窗體改變事件處理程序:

       private void Window_StateChanged(object sender, System.EventArgs e)
       {
           if (WindowState == WindowState.Minimized)
           {
               Hide();
               TrayIcon.Visibility = Visibility.Visible;
           }
       }
      

      鼠標左鍵點擊系統托盤圖標:

       private void TrayIcon_TrayLeftMouseDown(object sender, RoutedEventArgs e)
       {
           ShowMainWindow();
       }
       
       private void ShowMainWindow()
      {
          Show();
          WindowState = WindowState.Normal;
          Activate();
          TrayIcon.Visibility = Visibility.Collapsed;
      }
      

      鼠標右鍵系統托盤出現的顯示窗口與退出的事件處理程序:

      private void ShowWindow_Click(object sender, RoutedEventArgs e)
       {
           ShowMainWindow();
       }
      
       private void ExitApp_Click(object sender, RoutedEventArgs e)
       {
           TrayIcon.Dispose();
           Application.Current.Shutdown();
       }
      

      全部代碼:

      項目地址:https://github.com/Ming-jiayou/Rouyan

      最終效果:

      這樣就成功實現了在WPF應用中實現最小化到系統托盤,希望對你有所幫助。

      posted @ 2025-10-09 12:42  mingupupup  閱讀(1059)  評論(8)    收藏  舉報
      主站蜘蛛池模板: 爱性久久久久久久久| 渭源县| 国产成人8X人网站视频| 国产美女在线观看大长腿| 日韩精品视频一二三四区| 欧美福利电影A在线播放| 在线精品国产中文字幕| 久久99久国产精品66| 国产精品嫩草99av在线| 国产精品人伦一区二区三| 国产国产人免费人成免费| 你懂的在线视频一区二区| 国产午夜福利av在线麻豆| 精品国产成人亚洲午夜福利| 日韩中文字幕有码av| 中文国产成人精品久久不卡| 色爱综合激情五月激情| 亚洲不卡一区三区三区四| 亚洲综合一区二区精品导航| 久久亚洲精品11p| 泗阳县| 狠狠色丁香婷婷久久综合五月| 午夜福利片1000无码免费| 青青青爽在线视频观看| 亚洲精品第一国产综合精品| 在线免费成人亚洲av| 7878成人国产在线观看| 中文字幕国产日韩精品| 国产精品午夜福利视频| 欧美成人无码a区视频在线观看 | 欧美性猛交xxxx免费看| 武安市| 欧美xxxx精品另类| 国产福利永久在线视频无毒不卡| 亚洲精品日韩在线观看| 中文区中文字幕免费看| 国产成人无码AV片在线观看不卡| 久久精品国产99国产精品严洲| 久青草国产在视频在线观看| 手机在线看片不卡中文字幕| 久久青青草原精品国产app|