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

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

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

      WPF應用最小化到系統(tǒng)托盤

      前言

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

      本文以Rouyan這個WPF應用為例,說明在WPF中如何實現(xiàn)最小化到系統(tǒng)托盤。

      選擇

      在WPF中實現(xiàn)系統(tǒng)托盤功能,開發(fā)者通常有以下幾種選擇:

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

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

      3、H.NotifyIcon.Wpf:Hardcodet的現(xiàn)代維護版本

      這里我選擇的是H.NotifyIcon.Wpf,選擇H.NotifyIcon.Wpf的優(yōu)勢:

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

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

      3、WPF原生:無需引入WinForms依賴,與WPF的數(shù)據(jù)綁定和樣式系統(tǒng)完美集成

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

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

      使用

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

      第一步安裝nuget包:

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

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

       <!-- 系統(tǒng)托盤圖標 -->
       <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是你鼠標懸浮在圖標那會出現(xiàn)的文字,TrayLeftMouseDown是鼠標左鍵點擊系統(tǒng)托盤圖標事件,ContextMenu是右鍵系統(tǒng)托盤圖標會出現(xiàn)的選項。

      現(xiàn)在在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;
           }
       }
      

      鼠標左鍵點擊系統(tǒng)托盤圖標:

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

      鼠標右鍵系統(tǒng)托盤出現(xiàn)的顯示窗口與退出的事件處理程序:

      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

      最終效果:

      這樣就成功實現(xiàn)了在WPF應用中實現(xiàn)最小化到系統(tǒng)托盤,希望對你有所幫助。

      posted @ 2025-10-09 12:42  mingupupup  閱讀(1057)  評論(8)    收藏  舉報
      主站蜘蛛池模板: 久久综合老鸭窝色综合久久| 日本阿v片在线播放免费| 亚洲一本二区偷拍精品| 免费AV片在线观看网址| 精品久久久久久中文字幕202| 国产亚洲精品成人无码精品网站| 少妇无码av无码专区| 久久99精品久久久久久9| 色伊人久久综合中文字幕| 喀喇沁旗| 国产美女高潮流白浆视频| 人妻va精品va欧美va| 免费99精品国产人妻自在现线 | 国产高清午夜人成在线观看,| 福利成人午夜国产一区| 欧美精品亚洲精品日韩专| 色欲狠狠躁天天躁无码中文字幕| 亚洲无线一二三四区手机| 国产乱码日韩亚洲精品成人| 亚洲大尺度无码专区尤物| 少妇办公室好紧好爽再浪一点| 国产极品粉嫩尤物一线天| 黄色免费在线网址| 免费国产高清在线精品一区| 人人妻人人插视频| 噜噜综合亚洲av中文无码| 韩国无码AV片午夜福利| 国产精品日日摸夜夜添夜夜添无码 | 中文字幕日韩精品有码| 久久亚洲中文字幕伊人久久大| 中文字幕人妻中文AV不卡专区| 国产欧美精品区一区二区三区| 四虎国产精品久久免费精品| 国产国产午夜福利视频| 亚洲综合无码AV在线观看| 长腿校花无力呻吟娇喘| 看亚洲黄色不在线网占| 久久精品国产亚洲av麻| 97久久综合亚洲色hezyo| 国产一区二区波多野结衣| 极品无码国模国产在线观看|