首页
学习
活动
专区
圈层
工具
发布

WPF应用最小化到系统托盘

本文以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

26210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPF:自动执行机器人程序若干注意事项

    通常部署上线后,都是放在服务器上一直开着,不允许轻易被关闭,而且最好要有一个界面,随时可以手动方便控制状态或查看运行情况,一旦发生异常情况,能及时通知管理员(Email或短信之类) 如果是采用WPF技术开发...3.最小化到系统托盘 Winform中的NotifyIcon控件在WPF中仍然可以继续使用 先 using System.Windows.Forms; 添加Windows.Forms命名空间的引用 再声明一个窗体级的变量...private readonly NotifyIcon notifyIcon; 最后在主窗体的构架函数中,加入下列这一段 notifyIcon = new NotifyIcon(); notifyIcon.BalloonTipText...;//指定托盘图标为资源中的"App"图标 notifyIcon.Visible = false; notifyIcon.MouseClick += notifyIcon_MouseClick; //...else { e.Cancel = true; } } 5.单实例运行 Winform中要实现单实例运行,非常容易(见 利用c#制作托盘程序,并禁止多个应用实例运行),但是WPF

    1.6K80

    【愚公系列】2023年11月 Winform控件专题 NotifyIcon控件详解

    下面是一些常用的NotifyIcon控件属性和方法:属性:Icon:设置或获取NotifyIcon控件在系统托盘中显示的图标。Text:指定NotifyIcon控件鼠标悬停时显示的文本。...使用NotifyIcon控件通常需要以下步骤:创建一个新的NotifyIcon控件,并设置相关属性。编写事件处理程序来响应NotifyIcon控件的各种事件,例如鼠标单击、双击、右键菜单等。...NotifyIcon notifyIcon = new NotifyIcon(); notifyIcon.Tag = "一些与控件相关的数据"; notifyIcon.Text = "这是ToolTip...中的文本信息"; notifyIcon.Icon = new Icon("icon.ico"); notifyIcon.Visible = true; //为NotifyIcon控件注册鼠标事件...true; notifyIcon1.Text = "这是一个NotifyIcon控件的案例"; notifyIcon1.BalloonTipTitle = "提示"; notifyIcon1

    2.8K11

    利用c#制作托盘程序,并禁止多个应用实例运行

    托盘程序的制作: 1.把NotifyIcon控件拉一个到窗体上,并设置NotifyIcon的Icon(很重要!...e.Cancel = true; // 取消关闭窗体      this.Hide();     this.ShowInTaskbar = false;//取消窗体在任务栏的显示      this.notifyIcon1....Visible = true;//显示托盘图标  } 3.放一个上下文菜单,添加几个基本项,"显示主窗体","退出" ,将这个菜单挂到NotifyIcon上 private void menuShow_Click...(object sender, EventArgs e) {     this.Show();     this.ShowInTaskbar = true;     this.notifyIcon1...this.Dispose(true);     Application.ExitThread(); } 4.左键单击托盘图标时,显示主窗体,右击时当然是弹出上面设置的菜单 private void notifyIcon1

    1.7K90

    WPF开源项目:WPF-ControlBase

    消息对话 原文标题:示例:WPF中自定义MessageService应用DialogHost、Snackbar、NotifyIcon显示各种场景提示消息 原文链接:https://blog.csdn.net.../u010975589/article/details/95985190 3.1 目的 不同交互场景需要提示不同的消息,不同的消息需要用不同的效果来展示,应用DialogHost(对话框)、NotifyIcon...(消息提示)、Snackbar(气泡消息)显示各种场景提示消息,应用在ViewModel中 3.2 实现 等待对话框 确定对话框 确定与取消对话框 百分比进度和文本进度对话框 气泡提示消息(NotifyIcon...应用此框架的其他示例: 示例:应用WPF开发的仿制GitHub客户端UI布局_HeBianGu的博客-CSDN博客 示例:应用WPF开发的仿制百度网盘客户端UI布局_HeBianGu的博客-CSDN博客..._wpf 网盘 示例:应用WPF绘制轻量Chart图表之组合图效果预览_HeBianGu的博客-CSDN博客 封裝:WPF基于Vlc.DotNet.Wpf封装的视频播放器_HeBianGu的博客-CSDN

    4.1K10

    WPF依赖属性(wpf 依赖属性)

    依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。 将所有的属性都设置为依赖属性并不总是正确的解决方案,具体取决于其应用场景。有时,使用私有字段实现属性的典型方法便能满足要求。...希望使用已建立的、WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。...二、依赖属性的特点 1、属性变更通知 无论什么时候,只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等,这种变更的通知最有趣的特点之一就是属性触发器...属性在内存的使用上是截然不同的,每个CLR属性都包含一个非static的字段,因此当我们实例化一个类型的时候,就会创建该类型所拥有的所有CLR属性,也就是说一个对象所占用的内存在调用new操作进行实例化的时候就已经决定了、而wpf...1、在当前项目里面添加一个WPF版的用户控件,命名为“MyDependencyProperty”,在MyDependencyProperty.xaml.cs文件里面自定义一个依赖属性: 1 using

    3K20

    WPF开源项目:WPF-ControlBase

    消息对话 原文标题:示例:WPF中自定义MessageService应用DialogHost、Snackbar、NotifyIcon显示各种场景提示消息 原文链接:https://blog.csdn.net.../u010975589/article/details/95985190 3.1 目的 不同交互场景需要提示不同的消息,不同的消息需要用不同的效果来展示,应用DialogHost(对话框)、NotifyIcon...(消息提示)、Snackbar(气泡消息)显示各种场景提示消息,应用在ViewModel中 3.2 实现 等待对话框 确定对话框 确定与取消对话框 百分比进度和文本进度对话框 气泡提示消息(NotifyIcon...应用此框架的其他示例: 示例:应用WPF开发的仿制GitHub客户端UI布局_HeBianGu的博客-CSDN博客 示例:应用WPF开发的仿制百度网盘客户端UI布局_HeBianGu的博客-CSDN博客..._wpf 网盘 示例:应用WPF绘制轻量Chart图表之组合图效果预览_HeBianGu的博客-CSDN博客 封裝:WPF基于Vlc.DotNet.Wpf封装的视频播放器_HeBianGu的博客-CSDN

    4.2K30

    学习WPF——了解WPF中的XAML

    XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如映射为WPF的Button对象...Grid元素可以嵌套Button元素 了解XAML VisualStudio创建一个窗口,默认情况下产生的代码如下: 这段代码中包含两个标记元素,一个是Window,一个是Grid Window是WPF...如果我们在第三方组件中定义了Window类,如果没有一个名称空间做限定的话, 编译器不知道我们将使用哪个Window类型来渲染窗口 我们在上面的代码中,看到了两个名称空间,一个是WPF核心名称空间、...一个是XAML名称空间 WPF核心名称空间 http://schemas.microsoft.com/winfx/2006/xaml/presentation 包含所有WPF类,包含用来构建用户界面的控件...中附加属性多用于布局 修改记录 2015-1-5:完成全部内容 参考资料 《Pro WPF 4.5 in C# 4th Edition》 MSDN 备注 本篇只简单介绍了XAML

    2.8K70

    一种清除windows通知区域“僵尸”图标的方案——问题分析

    一般初始化图标         创建图标之前,我们需要初始化一个图标 NOTIFYICONDATA m_NotifyIcon; …… m_NotifyIcon.cbSize = sizeof(m_NotifyIcon...); m_NotifyIcon.uFlags = NIF_ICON | NIF_TIP; m_NotifyIcon.uVersion = NOTIFYICON_VERSION; // xp m_NotifyIcon.hWnd...= m_hWnd; m_NotifyIcon.hIcon = m_hIcon; std::wstring wstrInfo = L"中A英1文"; // 故意取一个晦涩的名字 wmemcpy_s(m_NotifyIcon.szTip...图标添加到通知区域         图标初始化后,我们要将图标增加到通知区域 Shell_NotifyIcon(NIM_ADD, &m_NotifyIcon);         这个图标是可以表明...Shell_NotifyIcon(NIM_DELETE, &m_NotifyIcon);         如果一切都如此按照规律的“正常生死”,也就没有之前提出的问题。

    1.7K30

    C# 实现最小化托盘功能

    winform程序实现最小化托盘显示 1.创建新的解决方案,解决方案名称和路径自定义 2.在解决方案下面新建一个窗体,从左边工具箱,将NotifyIcon拖过去窗体,该控件的作用是:运行程序期间在Windows...this.ShowInTaskbar = false;//在任务栏中显示该窗口 } else { notifyIcon1....Visible = false;//否则该控件不可见 } } //双击该控件时触发的事件 private void notifyIcon1...= FormWindowState.Normal;//窗口正常显示 this.ShowInTaskbar = true;//在任务栏中显示该窗口 } 还有一点,NotifyIcon...接下来增加一个另外的: 在NotifyIcon控件中增加一个右键菜单 1.在左边的工具栏中拖入一个上下文菜单contextMenuStrip ? 2.菜单上添加两个子项,显示和退出 ?

    1.8K10
    领券