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-系统托盘的更多相关文章

  1. WPF 系统托盘 图标闪烁

    WPF消息通知 系统托盘,图标闪烁 using System.Windows.Forms; using System.Windows.Threading; public partial class W ...

  2. WPF/.net core WPF 系统托盘支持

    WPF 原生不支持系统托盘图标,需要依靠其它方式处理. 1 使用 WinForm 的支持 WPF最小到系统托盘 - Arvin.Mei - 博客园 2 使用 wpf-notifyicon 库 hard ...

  3. WPF应用最小化至系统托盘运行

    原文:WPF应用最小化至系统托盘运行 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lordwish/article/details/5178889 ...

  4. 小菜学习Winform(七)系统托盘

    前言 有些程序在关闭或最小化的时候会隐藏在系统托盘中,双击或右击会重新显示,winform实现其功能很简单,这边就简单的介绍下. 实现 在winform实现托盘使用notifyIcon控件,如果加菜单 ...

  5. 将 VMware 最小化到系统托盘

    1, 下载 Trayconizer官网地址: http://www.whitsoftdev.com/trayconizer/下载地址: http://www.whitsoftdev.com/files ...

  6. C#编写WIN32系统托盘程序

    基本功能概述: 程序运行后驻留系统托盘,左键呼出,右键退出.后续可加右键菜单. 注册系统案件WIN+F10,呼出程序. 重写系统消息,最小化和关闭按钮隐藏程序 using System; using ...

  7. WP7系统托盘和应用程序栏

    (一)系统托盘和应用程序栏系统托盘(1)显示系统级别的状态信息(2)Apps能隐藏和显示系统托盘Micosoft.Phone.Shell.SystemTray.IsVisible=true;应用程序栏 ...

  8. 用Qt写软件系列四:定制个性化系统托盘菜单

    导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素, ...

  9. Qt系统托盘

    Qt的系统托盘的使用,可比mfc中好多了!他封装了一个专门的QSystemTrayIcon类,建立系统托盘图标.其实在Qt提供的示例程序已经很不错了,$QTDIR\examples\desktop\s ...

  10. C# WinForm窗口最小化到系统托盘

    * C# WinForm窗口最小化到系统托盘http://hi.baidu.com/kfxtgtqyapouyze/item/8ccfdcd5a174a7312a35c7c3 主要功能:(1).程序启 ...

随机推荐

  1. mapReduce的shuffle过程

    http://www.jianshu.com/p/c97ff0ab5f49 总结shuffle 过程: map端的shuffle: (1)map端产生数据,放入内存buffer中: (2)buffer ...

  2. final和包装类

    ==================================================================================================== ...

  3. Docker - 创建Swarm

    1. 准备 我们需要: Docker Engine 1.12 or later installed the IP address of the manager machine open ports b ...

  4. RIDE小技巧——Content Assistance快捷键(CTRL+空格)的修改

    大家在用RIDE Content Assistance功能的快捷键时会与机器中是输入法的切换相冲突,这里提供一下修改的位置,大家可以根据个人的喜好修改. 有三处需要修改: {Python_home}\ ...

  5. c#反射机制

    一:反射的定义 审查元数据并收集关于它的类型信息的能力.元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等. Sys ...

  6. C#版BitStream 1.0

    根据C++版的改编,刚刚改完,估计使用会有问题,对于uint8处理的不好 关于使用: BitStream bs = new BitStream( ); bs.WriteInt32( ); int a ...

  7. JS判断有无网络(移动端)

    ar EventUtil = { addHandler: function (element, type, handler) { if (element.addEventListener) { ele ...

  8. C#并行

         /// <summary>         ///该实现方式并不是最高效的         ///只是举个例子,说明用锁来保护共享状态         /// </summ ...

  9. popupwindow的基本使用以及基本动画效果

    1.创建一个popupwindow view的布局文件自己写一个就好了,这里就不说了 View view= LayoutInflater.from(context).inflate(R.layout. ...

  10. 马氏距离(Mahalanobis distance)

    马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离.它是一种有效的计算两个未知样本集的相似度的方法.与欧 ...