在WPF应用程序中使用FolderBrowserDialog

49

我有一个WPF应用程序,需要用户访问目录。我已经搜索了所有关于如何将Windows Forms集成到WPF的信息。我找到了很多关于如何将表单控件集成到我的XAML中的信息,但是却没有找到如何集成FolderBrowserDialog。

作为一名资深程序员,但我对.net非常陌生(事实上才第二天),我相信我无法找到好的实现方法,因为我无法确定FolderBrowserDialog的名称/类型。

哦,我使用c#和Visual Studio 2008

2个回答

81

4
我已经尝试了,但不幸的是,我遇到了这个错误: Error 1 The type or namespace name 'Forms' does not exist in the namespace 'System.Windows' (are you missing an assembly reference?) - david
6
如我所说,您需要添加对System.Windows.Forms.dll的引用。 - SLaks
不幸的是,它给了我相同的错误。 - david
2
@david:这意味着您没有添加引用。右键单击项目,然后单击添加引用。 - SLaks
2
使用 WinForms = System.Windows.Forms; 真的帮助我避免了模糊的引用。谢谢! - mandarin
我们在使用WPF时,通过远程桌面登录(dotNet 4.5.1)时,使用System.Windows.Forms.FolderBrowserDialog会导致应用程序崩溃。仅在发布版本中崩溃。如果删除FolderBrowserDialog(不调用其函数),则应用程序可以正常运行。 - guan boshen

25

如果我没记错的话,您正在寻找FolderBrowserDialog(因此得名):

var dialog = new System.Windows.Forms.FolderBrowserDialog();
System.Windows.Forms.DialogResult result = dialog.ShowDialog();

此外,还请查看此SO线程:打开目录对话框


在C#中,使用var作为类型会导致错误,而将其替换为FolderBrowserDialog(正如我在其他地方看到的)会产生缺少指令错误,即使有System.Windows.Forms.FolderBrowserDialog指令也是如此。我是否还有其他做错的地方?我会立即查看那个链接。谢谢。 - david
这应该可以正常工作 - 如SLaks所指出的,您需要在项目中添加对System.Windows.Forms.dll的引用。 - BrokenGlass
2
你还应该检查结果。例如: if(dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string path = dialog.SelectedPath; } - Chielus
参考文献中的内容都无法正常工作(引用中缺少类),但这对我来说完美地运行。 - Nick.McDermaid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接