WPF-系统托盘
WPFSystemTray.cs
public class WPFSystemTray
{
/// <summary>
/// 设置系统托盘
/// </summary>
/// <param name="pars">最小化参数</param>
/// <param name="dbClick"></param>
/// <returns></returns>
public static NotifyIcon SetSystemTray(SystemTrayParameter pars, List<SystemTrayMenu> menuList)
{
NotifyIcon notifyIcon = new NotifyIcon();
notifyIcon.Visible = true;
if (!string.IsNullOrWhiteSpace(pars.Icon))
{
notifyIcon.Icon = new System.Drawing.Icon(pars.Icon);//程序图标
}
if (!string.IsNullOrWhiteSpace(pars.MinText))
{
notifyIcon.Text = pars.MinText;//最小化到托盘时,鼠标悬浮时显示的文字
}
if (!string.IsNullOrWhiteSpace(pars.TipText))
{
notifyIcon.BalloonTipText = pars.TipText; //设置系统托盘启动时显示的文本
notifyIcon.ShowBalloonTip(pars.Time == ? : pars.Time);//显示时长
}
notifyIcon.MouseDoubleClick += pars.dbClick; //双击事件
notifyIcon.ContextMenuStrip = GetMenuStrip(menuList);
return notifyIcon;
}
/// <summary>
/// 设置系统托盘的菜单属性
/// </summary>
/// <param name="menus"></param>
/// <returns></returns>
static ContextMenuStrip GetMenuStrip(List<SystemTrayMenu> menus)
{
ContextMenuStrip menu = new ContextMenuStrip();
ToolStripMenuItem[] menuArray = new ToolStripMenuItem[menus.Count];
int i = ;
foreach (SystemTrayMenu item in menus)
{
ToolStripMenuItem menuItem = new ToolStripMenuItem();
menuItem.Text = item.Txt;
menuItem.Click += item.Click;
if (!string.IsNullOrWhiteSpace(item.Icon) && System.IO.File.Exists(item.Icon)) { menuItem.Image = System.Drawing.Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + item.Icon); }
menuArray[i++] = menuItem;
}
menu.Items.AddRange(menuArray);
return menu;
}
} /// <summary>
/// 系统托盘参数
/// </summary>
public class SystemTrayParameter
{
public SystemTrayParameter(string Icon, string MinText, string TipText, int Time, MouseEventHandler dbClick)
{
this.Icon = Icon;
this.MinText = MinText;
this.TipText = TipText;
this.Time = Time;
this.dbClick = dbClick;
}
/// <summary>
/// 托盘显示图标
/// </summary>
public string Icon { get; set; }
/// <summary>
/// 最小化悬浮时文本
/// </summary>
public string MinText { get; set; }
/// <summary>
/// 最小化启动时文本
/// </summary>
public string TipText { get; set; }
/// <summary>
/// 最小化启动时文本显示时长
/// </summary>
public int Time { get; set; }
/// <summary>
/// 最小化双击事件
/// </summary>
public MouseEventHandler dbClick { get; set; }
}
/// <summary>
/// 右键菜单
/// </summary>
public class SystemTrayMenu
{
/// <summary>
/// 菜单文本
/// </summary>
public string Txt { get; set; }
/// <summary>
/// 菜单图标
/// </summary>
public string Icon { get; set; }
/// <summary>
/// 菜单单击事件
/// </summary>
public EventHandler Click { get; set; }
}
MainWindow.cs
public MainWindow()
{
InitializeComponent();
//系统托盘
SystemTrayParameter pars = new SystemTrayParameter("Logo45.ico", "守护中", "", , notifyIcon_MouseDoubleClick);
this.notifyIcon = WPFSystemTray.SetSystemTray(pars, GetList());
WinCommon.WinBaseSet(this);
} #region 系统托盘
form.NotifyIcon notifyIcon;
//最小化到托盘
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Hide();
this.notifyIcon.Visible = true;
}
//托盘右键菜单集合
private List<SystemTrayMenu> GetList()
{
List<SystemTrayMenu> ls = new List<SystemTrayMenu>();
ls.Add(new SystemTrayMenu() { Txt = "打开主面板", Icon = "", Click = mainWin_Click });
ls.Add(new SystemTrayMenu() { Txt = "退出", Icon = "/img/exit.png", Click = exit_Click });
return ls;
}
//双击事件
void notifyIcon_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.Show();
this.notifyIcon.Visible = false;
}
#region 托盘右键菜单
//打开主面板
void mainWin_Click(object sender, EventArgs e)
{
this.Show();
//this.notifyIcon.Visible = false;
}
//退出
void exit_Click(object sender, EventArgs e)
{
this.Close();
System.Windows.Application.Current.Shutdown();
}
#endregion
#endregion
WPF-系统托盘的更多相关文章
- WPF 系统托盘 图标闪烁
WPF消息通知 系统托盘,图标闪烁 using System.Windows.Forms; using System.Windows.Threading; public partial class W ...
- WPF/.net core WPF 系统托盘支持
WPF 原生不支持系统托盘图标,需要依靠其它方式处理. 1 使用 WinForm 的支持 WPF最小到系统托盘 - Arvin.Mei - 博客园 2 使用 wpf-notifyicon 库 hard ...
- WPF应用最小化至系统托盘运行
原文:WPF应用最小化至系统托盘运行 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lordwish/article/details/5178889 ...
- 小菜学习Winform(七)系统托盘
前言 有些程序在关闭或最小化的时候会隐藏在系统托盘中,双击或右击会重新显示,winform实现其功能很简单,这边就简单的介绍下. 实现 在winform实现托盘使用notifyIcon控件,如果加菜单 ...
- 将 VMware 最小化到系统托盘
1, 下载 Trayconizer官网地址: http://www.whitsoftdev.com/trayconizer/下载地址: http://www.whitsoftdev.com/files ...
- C#编写WIN32系统托盘程序
基本功能概述: 程序运行后驻留系统托盘,左键呼出,右键退出.后续可加右键菜单. 注册系统案件WIN+F10,呼出程序. 重写系统消息,最小化和关闭按钮隐藏程序 using System; using ...
- WP7系统托盘和应用程序栏
(一)系统托盘和应用程序栏系统托盘(1)显示系统级别的状态信息(2)Apps能隐藏和显示系统托盘Micosoft.Phone.Shell.SystemTray.IsVisible=true;应用程序栏 ...
- 用Qt写软件系列四:定制个性化系统托盘菜单
导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素, ...
- Qt系统托盘
Qt的系统托盘的使用,可比mfc中好多了!他封装了一个专门的QSystemTrayIcon类,建立系统托盘图标.其实在Qt提供的示例程序已经很不错了,$QTDIR\examples\desktop\s ...
- C# WinForm窗口最小化到系统托盘
* C# WinForm窗口最小化到系统托盘http://hi.baidu.com/kfxtgtqyapouyze/item/8ccfdcd5a174a7312a35c7c3 主要功能:(1).程序启 ...
随机推荐
- 数据库(Database)
一.定义 1. 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,简单来说是本身可视为电子化的件柜--存储电子文件的处所,用户可以对文件中的数据进行新增.截取.更新.删除等操作.数 ...
- 在VisualStudio 编辑器文本替换中使用正则表达式
替换时使用正则表达式,其优点在于可以通过正则分组捕获,并在替换字符串中使用. 在VS2012之前的版本中,捕获内容用{}包含,引用时,使用 \1 形式: 在VS2012及以后版本中,捕获内容符合正则表 ...
- 面向过程(POP)、面向对象(OOP)、面向接口(IOP)、面向切面(AOP)
面向过程:典型的是C/C++的结构体,结构体里只有变量,没有处理变量的方法,需要专门编写处理变量的方法. 面向对象:ArrayList<Integer> list=new ArrayLis ...
- IE8 下 iframe 滚动条的问题
//设置滚动条 $("iframe[name='updateFocalWork']").attr("scrolling", &qu ...
- STM32F412应用开发笔记之四:与远红外炭氢传感器通讯
远红外炭氢传感器是在多组分气体传感器中用来检测甲烷和丙烷浓度的,采用单总线串行通讯,TTL电平.所以我们需要用到UART口来实现与远红外炭氢传感器的通讯. 远红外传感器就是这个样子的: 再来一张进气和 ...
- sha512散列(C语言)
/** * \file sha4.h * * \brief SHA-384 and SHA-512 cryptographic hash function * * Copyright (C) 2006 ...
- seo优化urlrewrite伪静态技术
1.下载urlrewrite-3.2.0.jar 2.在WEB-INF下增加urlrewrite.xml <?xml version="1.0" encoding=" ...
- js获取文档高度
网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.body.offsetWi ...
- Flask 框架入门
Flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 安装 Flask 依赖两个外部库, We ...
- 【转载】mysql慢查询
mysql> show variables like 'long%'; 注:这个long_query_time是用来定义慢于多少秒的才算“慢查询” +-----------------+---- ...