WPF控件--NotifyIcon

来源:互联网 发布:查看linux 网卡 编辑:程序博客网 时间:2024/05/21 06:17

1.在什么地方找到NotifyIcon

普通的WPF控件基本上都是在该命名空间下:System.Windows.Controls,该命名空间在C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.dll下。也就是说是.net framework3.0之后才支持的。

那难道在WPF下就不能使用NotifyIcon了吗?

在MSDN上有以下关于通知图标的示例:http://msdn.microsoft.com/zh-cn/library/aa972170(VS.90).aspx

using System;using System.Windows;using System.Windows.Forms; // NotifyIcon controlusing System.Drawing; // Iconpublic partial class MainWindow : Window{    NotifyIcon notifyIcon;    public MainWindow()    {        InitializeComponent();    }    void click(object sender, RoutedEventArgs e)    {        // Configure and show a notification icon in the system tray        this.notifyIcon = new NotifyIcon();        this.notifyIcon.BalloonTipText = "Hello, NotifyIcon!";        this.notifyIcon.Text = "Hello, NotifyIcon!";        this.notifyIcon.Icon = new System.Drawing.Icon("NotifyIcon.ico");        this.notifyIcon.Visible = true;        this.notifyIcon.ShowBalloonTip(1000);    }}

其中包含NotifyIcon控件,请注意它的命名空间:System.Windows.Forms; ,该命名空间是在C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll下。所以说此处使用的NotifyIcon控件其实是.net framework 2.0就提供的在winform下面是用的控件。

2.怎么使用NotifyIcon

App.xaml

<Application x:Class="NotifyIconStd.App"             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             ShutdownMode="OnExplicitShutdown" Startup="ApplicationStartup" Exit="ApplicationExit">    <Application.Resources>             </Application.Resources></Application>

App.xaml.cs

using System;using System.Collections.Generic;using System.Configuration;using System.Data;using System.Linq;using System.Windows;using System.Windows.Forms;using Application = System.Windows.Application;namespace NotifyIconStd{    public partial class App : Application    {        private static NotifyIcon trayIcon;        private void ApplicationStartup(object sender, StartupEventArgs e)        {            RemoveTrayIcon();            AddTrayIcon();        }        private void AddTrayIcon()        {            if (trayIcon != null)            {                return;            }            trayIcon = new NotifyIcon            {                Icon = new System.Drawing.Icon("notifyIcon.ico"),                Text = "NotifyIconStd"            };            trayIcon.Visible = true;            ContextMenu menu = new ContextMenu();            MenuItem closeItem = new MenuItem();            closeItem.Text = "Close";            closeItem.Click += new EventHandler(delegate { this.Shutdown(); });            MenuItem addItem = new MenuItem();            addItem.Text = "Menu";            menu.MenuItems.Add(addItem);            menu.MenuItems.Add(closeItem);            trayIcon.ContextMenu = menu;    //设置NotifyIcon的右键弹出菜单        }        private void RemoveTrayIcon()        {            if (trayIcon != null)            {                trayIcon.Visible = false;                trayIcon.Dispose();                trayIcon = null;            }        }        private void ApplicationExit(object sender, ExitEventArgs e)        {            RemoveTrayIcon();        }    }}

该示例程序程序只是在程序启动时,同时启动了一个NotifyIcon,没有其他主程序界面,可以在MenuItem的事件中添加关于弹出其他窗口的处理。

原创粉丝点击