FolderBrowserDialog – 发生Win32Exception – 参数不正确

我尝试使用WPF中的FolderBrowserDialog,如下所示:

public static bool BrowseFolder(out string folderName) { using (System.Windows.Forms.FolderBrowserDialog dlg = new System.Windows.Forms.FolderBrowserDialog()) { var result = dlg.ShowDialog(); folderName = dlg.SelectedPath; return result == System.Windows.Forms.DialogResult.OK; } } 

在Visual Studio 2010中使用“break on exception”时,在ShowDialog()调用中关闭Dialog后会出现exception。 我很好奇为什么会这样。

例外:Win32Exception
消息:参数不正确
Stacktrace:在MS.Win32.UnsafeNativeMethods.SetFocus(HandleRef hWnd)

更新
我还尝试显式设置父级,但仍然抛出了exception。

 var w = new System.Windows.Interop.WindowInteropHelper(parent); System.Windows.Forms.IWin32Window i = new WindowWrapper(w.Handle); result = dlg.ShowDialog(i); 

这只是一点点互操作性。 当对话框关闭时,WPF代码尝试将焦点设置回主窗口。 问题是,对话框已禁用窗口,因此它无法接收焦点。 WPF太急于改变焦点,并且对对话行为一无所知。 什么都没有出错。

我会尝试不使用“使用”语句来完成它,也许它会很快被清理干净。

我相信你需要一个Windows窗体主机来运行Windows.Forms命名空间中的任何东西……试一试!