【问题标题】:Avoiding ambiguity with MessageBox in WPF在 WPF 中使用 MessageBox 避免歧义
【发布时间】:2013-03-04 19:49:05
【问题描述】:

我最近经常遇到这个问题。我经常使用 WPF/C# 编写程序,并希望使用 OpenFileDialog 或其他需要 System.Windows.Forms 的类。我也经常使用 MessageBoxes(当添加 Forms 时,它们在两个库之间变得模棱两可)。

我添加了引用,但是(即使使用快捷方式)我必须使用类似F.MessageBox.Show() 的东西。有没有办法在我需要时临时使用 System.Windows.Forms 引用或其他可以让我保持 MessageBox.Show() 完整的方法?

【问题讨论】:

标签: c# wpf winforms messagebox


【解决方案1】:

Microsoft 将大量 Windows 对话框移至 Microsoft.Win32 命名空间,因此您无需添加对所有 System.Windows.Forms 的引用。

【讨论】:

  • 对。为完整起见,Microsoft.Win32.OpenFileDialog 是 PresentationFramework.dll 的一部分,因此 WPF 项目应该已经拥有对它的引用,但如果出于某种原因将其删除,则需要添加它。
【解决方案2】:

您可以在需要 WinForms MessageBox 的文件顶部放置以下 using 指令:

using MessageBox = System.Windows.Forms.MessageBox;

这将解决歧义

【讨论】:

    【解决方案3】:

    我建议您使用 wpf 提供的等价物。这是 System.Windows.MessageBox。它几乎看起来像 windows 窗体中的那个,但是参数和返回值可能不同。下面是一个示例来说明它的使用。

    var res = MessageBox.Show("Shutdown now ?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question);
    if (res== MessageBoxResult.Yes)
    {
        Application.Current.Shutdown();
    }
    

    【讨论】:

    • 您的回答肯定是正确的,但我认为 OP 已经在使用 WPF MessageBox,但 WinForms OpenFileDialog。 Moozhe 的回答为此提供了 WPF 替代方案。
    猜你喜欢
    • 2020-04-24
    • 2018-12-20
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2019-09-03
    相关资源
    最近更新 更多