WPF利用NotifyIcon创建任务栏图标(菜鸟教程)

学习目标:

记录从WPF应用创建开始,一步步到任务栏图标创建的全过程。

流程:

1、环境:Win10 + VS2017

打开VS2017,选择文件 -> 新建 -> 项目 -> Visual C# -> Windows桌面 ->WPF应用 -> 更改项目名为 TasbarIcon -> 确定
在这里插入图片描述

2、添加图标类

右键项目 -> 添加 ->引用,找到System.Windows.Forms 和 System.Drawing两个程序集,打上勾添加进去。
在这里插入图片描述

双击打开App.xaml.cs文件,在 namespace TaskbarIcon 里面添加图标类代码

//App.xaml.cs
namespace TaskbarIcon
{
    public partial class App : Application
    {
    }

    public class myIcon
    {
        //任务栏图标
        System.Windows.Forms.NotifyIcon notifyIcon = null;

        public void Icon()
        {
            //创建图标
            this.notifyIcon = new System.Windows.Forms.NotifyIcon();

            //程序打开时任务栏会有小弹窗
            this.notifyIcon.BalloonTipText = "PalmServer is running...";

            //鼠标放在图标上时显示的文字
            this.notifyIcon.Text = "PalmServer";

            //图标图片的位置,注意这里要用绝对路径
            this.notifyIcon.Icon = new System.Drawing.Icon("E:/WPF prroject/WpfApp4/WpfApp4/sheep.ico");

            //显示图标
            this.notifyIcon.Visible = true;

            //右键菜单--退出菜单项
            System.Windows.Forms.MenuItem exit = new System.Windows.Forms.MenuItem("Quit");
            exit.Click += new EventHandler(CloseWindow);

            //关联托盘控件
            System.Windows.Forms.MenuItem[] children = new System.Windows.Forms.MenuItem[] { exit };
            notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(children);

            this.notifyIcon.ShowBalloonTip(1000);
        }

        //退出菜单项对应的处理方式
        public void CloseWindow(object sender, EventArgs e)
        {
            //Dispose()函数能够解决程序退出后图标还在,要鼠标划一下才消失的问题
            this.notifyIcon.Dispose();
            //关闭整个程序
            Application.Current.Shutdown();
        }
    }
}

3、使用图标类

先打开 MainWindow.xaml文件,在里面添加closed事件的声明

//MainWindow.xaml
<Window x:Class="TaskbarIcon.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TaskbarIcon"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800"
        Closed="Window_Closed">
    <Grid>
        
    </Grid>
</Window>

然后在MainWindo.xaml.cs文件里面使用图标类

//MainWindo.xaml.cs
namespace TaskbarIcon
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            ic = new myIcon();
            ic.Icon();

        }
        myIcon ic;

        public void Window_Closed(object sender, EventArgs e)
        {
            ic.CloseWindow(null, null);
            System.Windows.Application.Current.Shutdown();
        }
    }
}

至此,就能创建出自己的程序任务栏图标了!


WPF是一种强大的桌面应用程序开发框架,通常用于创建丰富的用户界面。但是,在WPF中,没有直接的内置功能来实现系统托盘图标NotifyIcon)的功能。不过我们可以通过以下步骤来实现: 1. 首先,我们需要将`System.Windows.Forms.dll`和`System.Drawing.dll`这两个Windows Forms相关的组件添加到WPF项目的引用中,这些组件包含了实现系统托盘图标的类和方法。 2. 在XAML文件中,添加一个隐藏的`Window`,作为托盘图标的容器。 3. 创建一个`NotifyIcon`对象,并配置其图标、提示文本等属性。同时,设置`NotifyIcon`的双击事件,当用户双击图标时发生的事件。这个事件可以是弹出一个菜单、恢复应用程序窗口等。 4. 当应用程序最小化时,隐藏主窗口。在此期间,`NotifyIcon`将一直显示在系统托盘区域,并可以通过鼠标右键菜单或双击图标来调用指定的操作。 5. 添加必要的事件处理程序,例如,当用户单击图标时显示/隐藏主窗口、右键单击图标时显示弹出菜单等。你还可以根据需要自定义其他事件。 综上所述,虽然WPF本身没有直接提供实现系统托盘图标的功能,但是我们可以通过结合使用Windows Forms组件来实现该功能。当应用程序最小化时,通过隐藏主窗口并在系统托盘区域显示一个`NotifyIcon`来实现系统托盘图标的功能。这样,用户就可以通过右键单击或双击图标来调用相关操作,从而提供更好的用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值