FolderBrowserDialog - 发生Win32Exception - 参数不正确

tes*_*ino 9 c# wpf

我尝试使用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;
   }
}
Run Code Online (Sandbox Code Playgroud)

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

异常:Win32Exception
消息:参数不正确
Stacktrace:at MS.Win32.UnsafeNativeMethods.SetFocus(HandleRef hWnd)

更新
我也尝试显式设置父级,但仍然抛出了异常.

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

Han*_*ant 9

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


Fai*_*azi -1

我确实相信您需要一个 Windows 窗体主机来运行 Windows.Forms 命名空间中的任何内容...尝试一下!