使用OpenFileDialog选择文件和文件夹

9
我已经做了很多研究,以找到一个合适的答案来解决这个问题,但是我失败了。
我看到这里和其他论坛上有多个问题被问到,但没有清晰的答案可以带来明确的解决方案。
我想要 OpenFileDialog 为我选择文件/文件夹,并允许我选择文件夹。例如:a. 多个文件或多个文件夹(-最优先)b. 文件和文件夹的组合(-优先级较低)
我在这里找到了类似的问题(所以请不要标记它为重复)Question 1 [回答链接已损坏] Question 2 [问题没有完全问出我的需求。]
请指导我找到一些解决方案。我是一个初学者和学习者。
任何帮助或指针都将非常有帮助。
谢谢。

很困惑,如果用户双击文件夹会发生什么?通常情况下,如果我们选择了该文件夹,则该文件夹将被添加到所选列表中,但是该文件夹不应该被打开。而我们想要的行为是打开该文件夹。 - King King
目前没有内置的解决方案。据我所知,您唯一的选择是设计自己的解决方案。您可以尝试扩展 OpenFileDialogFolderBrowserDialog 但不确定是否能很好地工作。您可能最好从 CommonDialog 进行扩展。 - awudoin
@awudoin:根据MSDN([doc1](http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog.aspx)和[doc2](http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.aspx)),无法继承`OpenFileDialog`或`FolderBrowserDialog`类。 事实上,从CommonDialog扩展再次是我唯一的选择。谢谢 :) - B Bhatnagar
4个回答

3
您无法使用OpenFileDialog选择文件夹,也无法使用FolderBrowserDialog选择文件。但是有一个开源的.NET控件可以让您选择文件和文件夹,您可以在此处查看:OpenFileOrFolderDialog。请注意保留HTML标记。

3
var dialog = new OpenFileDialog();
dialog.ValidateNames = false;
dialog.CheckFileExists = false;
dialog.CheckPathExists = true;
dialog.FileName = "Must set default";
dialog.ShowDialog() // will allow both files and folders to be selected

相当hack。

来源


这允许您选择一个不存在的默认名称,表示文件夹。太棒了!+1 - Roland

2

OpenFileDialog 用于打开文件而不是文件夹。

如果要允许选择多个文件,请将Multiselect属性设置为true

如需选择文件夹,请参阅文档

如果要允许用户选择文件夹而不是文件,请使用FolderBrowserDialog


8
这并不能解决原帖作者的问题,他想把所有选择的文件夹和文件名放到FileNames中,或者以某种方式允许用户在OpenFileDialog中同时选择文件夹和文件。这个答案提到的所有内容似乎都被原帖作者知道了,他只是想找一些技巧使它按照他的意愿工作。 - King King
@KingKing 嗯,是的,没有什么捷径可以做到这一点。唯一的解决方法就是开发或找到一个。 - Anirudha

0

您可以创建选择器 "文件或目录",并根据用户选择打开标准的 OpenFileDialogFolderBrowserDialog。或者您可以创建(或查找)自定义文件管理器,具有同时选择文件和文件夹的选项。


我已经在使用这样的解决方案,但我想减少用户点击并在 OpenFileDialog 上提供一些功能。不过还是谢谢你的回复。 :) - B Bhatnagar

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