C# - 如何自定义 OpenFileDialog 以选择多个文件夹和文件?
Posted
技术标签:
【中文标题】C# - 如何自定义 OpenFileDialog 以选择多个文件夹和文件?【英文标题】:C# - How to customize OpenFileDialog to select multiple folders and files? 【发布时间】:2012-07-22 14:28:35 【问题描述】:我已发布 - How to use OpenFileDialog to select a folder?,我找不到正确答案。 所以,我改变了我的问题。
我想自定义 OpenFileDialog 以选择多个文件夹和文件。我试图找到一个解决方案,并且可以看到一些关于它的帖子。
我从网上找到了以下项目-https://github.com/scottwis/OpenFileOrFolderDialog。
但是,在使用它时,我遇到了一个问题。它使用 MFC 中的 GetOpenFileName 函数和 OPENFILENAME 结构。 OPENFILENAME 有一个名为“templateID”的成员。 它是对话框模板的标识符。示例项目包含“res1.rc”文件,其中还包含模板对话框。
但我不知道如何将此文件附加到我的 C# 项目中?
或者有没有其他完美的解决方案——“如何自定义OpenFileDialog选择多个文件夹和文件?”?
【问题讨论】:
要下载已停用的 WindowsAPICodePack 的 source,其中包括一些答案中提到的 CommonOpenFileDialog,请参阅Boltclock's answer here。 ... 在该下载中,CommonOpenFileDialog
类位于项目 Shell / CommonFileDialogs
/ CommonOpenFileDialog.cs
中。注意:需要 Windows Vista 或更高版本。
查看 Ookii Dialogs 实现了文件夹浏览器对话框
【参考方案1】:
如果您使用 FileNames 属性而不是 FileName 属性,您将获得每个选定文件的字符串数组,您可以使用 shift 键选择多个文件。像这样:
private void button1_Click(object sender, EventArgs e)
OpenFileDialog x = new OpenFileDialog();
x.Multiselect = true;
x.ShowDialog();
string[] result = x.FileNames;
foreach (string y in result)
MessageBox.Show(y, "Selected Item", MessageBoxButtons.OK, MessageBoxIcon.Information);
对于需要使用WinAPI 中包含的CommonOpenFileDialog
的文件和文件夹,特定的类是here。
【讨论】:
您需要将OpenFileDialog
的Multiselect
属性设置为true
才能工作:)
您是否忘记了“多个文件夹和文件”?我也想选择文件夹。
我认为您需要改用 CommonOpenFileDialog,但它应该以相同的方式工作,我会尽快更新我的答案
CommonOpenFileDialog 并没有真正解决这个问题,因为它允许选择多个文件夹或选择多个文件,但不能同时选择两者(取决于 IsFolderPicker 属性)。但是,是否可以以对话框更灵活的方式设置属性,即允许用户同时选择文件和文件夹?对于我正在编写的某种上传工具,我需要它,并且用户应该能够选择他认为需要上传的任何内容......【参考方案2】:
试试这个:
openFileDialog.Multiselect = true;
【讨论】:
您是否忘记了“多个文件夹和文件”?我也想选择文件夹。 不幸的是,它不适用于文件夹。当 Multiselect 为真时,您可以尝试选择多个文件夹 - 但是当您单击“打开”时,它不会返回所选文件夹,它只是导航到第一个所选文件夹,并在其中显示文件。使用过滤器测试All files|*.*
【参考方案3】:
您可能无法获得这样的内置 .Net 控件。绝对 OpenFileDialog 不能同时作为文件浏览器和文件夹浏览器。对于第三方工具,您有两种选择,例如您找到的第二个让您自己控制的工具。令人惊讶的是,您可能会发现创建自己的控件的非常简单版本并不困难。
【讨论】:
谢谢。你有什么推荐的第三方工具吗? 我从来没有用过...从来不需要...但是看看这些链接..ssware.com/fldrview.htm 和codeproject.com/Articles/44914/…以上是关于C# - 如何自定义 OpenFileDialog 以选择多个文件夹和文件?的主要内容,如果未能解决你的问题,请参考以下文章
c# winform 如何实现选择另一台电脑上目录下的文件??
C# - 如何在 OpenFileDialog 中允许多种文件类型?
C# Winforms - 尝试通过将 FileDialogPermission 添加到 AppDomainSetup 来显示 OpenFileDialog