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).程序启 ...
随机推荐
- UIPickerView去掉背景上的黑线
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger) ...
- 配置VMware虚拟机用绕过校园网达到无线上网配置方法
因为平时要用到Vmware这样的工具上虚拟机上网, 但是本人是学生狗,学生狗在学校就要面对大学毒瘤软件--锐捷,而锐捷是不允许有虚拟网卡的存在的,所以上网只能用wifi上.之前试了很久,反正是怎么开都 ...
- mysql 学习官网
http://www.runoob.com/mysql/mysql-install.html
- Java POI 解析word文档
实现步骤: 1.poi实现word转html 2.模型化解析html 3.html转Map数组 Map数组(数组的操作处理不做说明) 1.导jar包. 2.代码实现 package com.web.o ...
- C# 操作excel单元格居中
C# 操作excel //导出Excel private void ExportExcel(string fileName, System.Data.DataTable myDGV, s ...
- brew 安装 mysql
在网上看到各种教程,都会出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.soc ...
- 如何清除Xcode8打印的系统日志
Xcode升级成8之后,就会发现控制台打印的日志莫名其妙的变得超级多,最关键的是很多都是没有用的东西,而有些有用的东西却淹没在那无任何卵用的里面,在这我就说一下如何关掉这些没有用的日志. 1.直接快捷 ...
- HTML中块级元素与行内元素
一.行内元素与块级元素 块级元素列表 <address> 定义地址 <caption> 定义表格标题 <dd> 定义列表中定义条目 <div> 定义文档 ...
- C++ 系列:C++ 基础 002
Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...
- webpack初试
前言: 知道这完儿,没用过.关于webpack有很多介绍了,就不多说了.放几个链接,方便新手理解.这是给纯没用过的人了解的.这里只是简单介绍一下webpack的基本用法.大多内容都是来自webpack ...