通过NotifyIcon实现程序小图标,自己学习了下,记录下来,以后或许会用到。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Forms;
using System.IO;
using System.Drawing;
namespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
NotifyIcon notifyIcon = new NotifyIcon();
private System.Windows.Forms.ContextMenu contextMenu;
private System.Windows.Forms.MenuItem menuItemExit;
private System.Windows.Forms.MenuItem menuItemOpen;
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//this.ShowInTaskbar = false;
iconShow();
}
/// <summary>
/// 显示小图标
/// </summary>
private void iconShow()
{
//window.notifyIcon.BalloonTipText = "Hello, sss!";
notifyIcon.Text = "sss";
//Stream stream = this.GetType().Assembly.
// GetManifestResourceStream("E:\\WPFStudy\\WpfApplication1\\logo_setup.ico");
//if (stream != null)
//{
notifyIcon.Icon = new Icon("E:\\WPFStudy\\WpfApplication1\\logo_setup.ico");
//}
notifyIcon.Visible = true;
notifyIcon.MouseDoubleClick += onNotifyIconDoubleClick;
//window.notifyIcon.ShowBalloonTip(500);
//创建右键菜单
this.contextMenu = new System.Windows.Forms.ContextMenu();
this.menuItemExit = new System.Windows.Forms.MenuItem();
this.menuItemOpen = new System.Windows.Forms.MenuItem();
// Initialize contextMenu1
//添加右键菜单项
this.contextMenu.MenuItems.Add(menuItemExit);
this.contextMenu.MenuItems.Add(menuItemOpen);
// Initialize menuItem1
//右键菜单项内容
this.menuItemExit.Index = 1;
this.menuItemExit.Text = "退出";
this.menuItemExit.Click += new System.EventHandler(this.menuItemExit_Click);
//右键菜单项内容
this.menuItemOpen.Index = 0;
this.menuItemOpen.Text = "打开";
this.menuItemOpen.Click += new System.EventHandler(this.menuItemOpen_Click);
notifyIcon.ContextMenu = contextMenu;
UpdateLayout();
}
/// <summary>
/// 右键菜单点击事件
/// </summary>
/// <param name="Sender"></param>
/// <param name="e"></param>
private void menuItemExit_Click(object Sender, EventArgs e)
{
this.Closing += new System.ComponentModel.CancelEventHandler(this.WinMainWindow_Closing);
this.Close();
}
/// <summary>
/// 窗口关闭事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void WinMainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
this.Close();
}
/// <summary>
/// 右键菜单点击事件
/// </summary>
/// <param name="Sender"></param>
/// <param name="e"></param>
private void menuItemOpen_Click(object Sender, EventArgs e)
{
qPan_OpenFromTuoPan();
}
/// <summary>
/// 小图标双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void onNotifyIconDoubleClick(object sender, EventArgs e)
{
qPan_OpenFromTuoPan();
}
/// <summary>
/// 打开托盘
/// </summary>
private void qPan_OpenFromTuoPan()
{
this.Visibility = Visibility.Visible;
this.ShowInTaskbar = true;
this.WindowState = WindowState.Maximized;
//FinanceContext.MainWindow.WindowState = WindowState.Maximized;
}
}
}