2013-03-04 38 views
1

最近我遇到過這個問題。我經常使用WPF/C#編寫程序,並且想要使用OpenFileDialog或其他需要System.Windows.Forms的類。我也經常使用MessageBoxes(當添加Forms時,它們在兩個庫之間變得模糊)。避免在WPF中使用MessageBox引起歧義

我添加了參考,但(即使使用快捷方式),我不得不使用類似F.MessageBox.Show()之類的東西。有沒有辦法在我需要的時候暫時使用System.Windows.Forms參考或其他可以讓我保持MessageBox.Show()完整的參考?

+0

[System.Windows.MessageBox VS System.Windows.Forms.MessageBox](的可能的複製http://stackoverflow.com/questions/4660587/system-windows-messagebox-vs-system-windows-forms -messagebox) – 2016-05-17 18:19:56

回答

3

微軟移動很多Windows對話框中的Microsoft.Win32命名空間所以你不需要添加對所有System.Windows.Forms的引用。

+0

沒錯。爲了完整性,['Microsoft.Win32.OpenFileDialog'](http://msdn.microsoft.com/en-us/library/microsoft.win32.openfiledialog.aspx)是PresentationFramework.dll的一部分,因此WPF項目*應該*已經有了它的參考,但是如果它因任何原因被刪除,那就是要添加的那個。 – hvd 2013-03-04 19:55:08

2

你可以把下面的使用上的文件需要的WinForms消息框的頂部指令:

using MessageBox = System.Windows.Forms.MessageBox; 

,將解決塔歧義

0

我建議你使用wpf提供的等價物。這是System.Windows.MessageBox。它幾乎看起來像Windows窗體中的那個,但參數和返回值可能不同。下面是一個例子來說明它的用法。

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

你的回答當然是正確的,但我認爲OP已經在使用WPF'MessageBox',但是WinForms'OpenFileDialog'。 Moozhe的回答給出了WPF的選擇。 – hvd 2013-03-04 19:59:42