WPF MessageBox 不等待结果 [WPF NotifyIcon]

作者:编程家 分类: swift 时间:2025-07-18

使用 WPF NotifyIcon 实现 MessageBox 不等待结果

在 WPF 中,我们经常需要使用 MessageBox 来显示一些提示信息或者警告信息,而且通常情况下 MessageBox 都是模态的,也就是说它会阻塞当前线程,直到用户点击了确定按钮或者关闭了 MessageBox。然而,在某些特定的场景下,我们可能希望 MessageBox 不等待用户的操作结果,而是继续执行后续的逻辑。那么,有没有办法实现这样的功能呢?在本文中,我们将介绍如何使用 WPF NotifyIcon 来实现这一功能。

什么是 WPF NotifyIcon?

WPF NotifyIcon 是一个开源的项目,它是基于 Hardcodet.NotifyIcon.Wpf 库的扩展,用于在 WPF 应用程序中显示系统托盘图标。通过使用 WPF NotifyIcon,我们可以在系统托盘中显示自定义的图标,并且可以响应鼠标点击事件,显示自定义的上下文菜单。除此之外,WPF NotifyIcon 还提供了一些其他功能,比如显示气球提示、显示自定义的通知窗口等。

如何实现 MessageBox 不等待结果?

在使用 WPF NotifyIcon 实现 MessageBox 不等待结果之前,我们首先需要安装 Hardcodet.NotifyIcon.Wpf 库。可以通过 NuGet 包管理器来安装这个库,或者直接从官方网站下载并引用。

一旦我们安装好了 WPF NotifyIcon,就可以开始实现 MessageBox 不等待结果的功能了。下面是一个简单的示例代码:

csharp

using System.Windows;

using Hardcodet.Wpf.TaskbarNotification;

public partial class MainWindow : Window

{

private TaskbarIcon notifyIcon;

public MainWindow()

{

InitializeComponent();

// 创建系统托盘图标

notifyIcon = (TaskbarIcon)FindResource("NotifyIcon");

// 注册点击事件

notifyIcon.TrayLeftMouseUp += NotifyIcon_TrayLeftMouseUp;

}

private void NotifyIcon_TrayLeftMouseUp(object sender, RoutedEventArgs e)

{

// 在系统托盘图标上点击时,显示自定义的通知窗口

var notificationWindow = new NotificationWindow();

notificationWindow.Show();

}

}

在上面的代码中,我们创建了一个 MainWindow,并在其中创建了一个 TaskbarIcon 对象,用于显示系统托盘图标。然后,我们注册了 TrayLeftMouseUp 事件,当用户点击系统托盘图标时,会触发这个事件。在事件处理程序中,我们创建了一个自定义的通知窗口 NotificationWindow,并显示出来。

通过使用 WPF NotifyIcon,我们可以实现 MessageBox 不等待结果的功能。当我们需要在 WPF 应用程序中显示一些提示信息或者警告信息时,可以使用这种方式,避免阻塞当前线程。同时,WPF NotifyIcon 还提供了其他一些有用的功能,可以让我们更好地控制系统托盘图标的行为。希望本文对你有所帮助,谢谢阅读!