2026/4/7 7:17:04
网站建设
项目流程
深圳网站优化方式,wordpress 邀请码,彩票网站有人做吗,陕西省建设厅执业资格注册中心网站前言在现代桌面应用开发中#xff0c;系统托盘#xff08;System Tray#xff09;功能已经成为用户体验的重要组成部分。特别是对于需要长时间运行的应用程序#xff0c;如即时通讯工具、音乐播放器、系统监控工具等#xff0c;最小化到系统托盘不仅可以节省任务栏空间系统托盘System Tray功能已经成为用户体验的重要组成部分。特别是对于需要长时间运行的应用程序如即时通讯工具、音乐播放器、系统监控工具等最小化到系统托盘不仅可以节省任务栏空间还能让应用在后台持续运行随时为用户提供服务。本文以Rouyan这个WPF应用为例说明在WPF中如何实现最小化到系统托盘。选择在WPF中实现系统托盘功能开发者通常有以下几种选择1、System.Windows.Forms.NotifyIcon最传统的方式需要引用WinForms2、Hardcodet.NotifyIcon.Wpf专为WPF设计的托盘组件3、H.NotifyIcon.WpfHardcodet的现代维护版本这里我选择的是H.NotifyIcon.Wpf选择H.NotifyIcon.Wpf的优势1、现代化维护相比原版HardcodetH.NotifyIcon.Wpf有更活跃的维护和bug修复2、完全兼容保留了原版的API和XAML命名空间迁移成本为零3、WPF原生无需引入WinForms依赖与WPF的数据绑定和样式系统完美集成4、功能丰富支持气泡提示、上下文菜单、多种鼠标事件等H.NotifyIcon.Wpf项目地址https://github.com/HavenDV/H.NotifyIcon使用先描述一下我们想要实现的效果我想要点击最小化与关闭的时候让这个应用最小化到系统托盘然后点击系统托盘的图标显示这个应用或者右键系统托盘的图标有两个选项一个是显示窗口一个是退出点击退出才真的退出程序。第一步安装nuget包第二步在主窗口中添加控件先添加xmlns:tbhttp://www.hardcodet.net/taskbar与StateChangedWindow_StateChanged。!-- 系统托盘图标 --tb:TaskbarIcon x:NameTrayIconIconSource/Assets/福州肉燕.icoToolTipTextRouyanTrayLeftMouseDownTrayIcon_TrayLeftMouseDowntb:TaskbarIcon.ContextMenuContextMenuMenuItem Header显示窗口 ClickShowWindow_Click/Separator/MenuItem Header退出 ClickExitApp_Click//ContextMenu/tb:TaskbarIcon.ContextMenu/tb:TaskbarIconToolTipText是你鼠标悬浮在图标那会出现的文字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应用中实现最小化到系统托盘希望对你有所帮助。