C# - 如何自定义OpenFileDialog以选择多个文件夹和文件?

Yun*_*Yun 13 c# openfiledialog

我发布了 - 如何使用OpenFileDialog选择文件夹?,我找不到正确的答案.所以,我改变了我的问题.

我想自定义OpenFileDialog以选择多个文件夹和文件.我试图找到一个解决方案,可以看到一些关于它的帖子.

从互联网上,我找到了以下项目 - https://github.com/scottwis/OpenFileOrFolderDialog.

然而,在使用它时,我遇到了一个问题.它使用MFC中的GetOpenFileName函数和OPENFILENAME结构.和OPENFILENAME有一个名为"成员templateID ".它是对话框模板的标识符.并且示例项目具有" res1.rc "文件,并且还具有模板化对话框.

但我不知道如何将此文件附加到我的C#项目中?

还是有任何其他完美的解决方案 - " 如何自定义OpenFileDialog以选择多个文件夹和文件? "?

JMK*_*JMK 11

如果使用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);
}
Run Code Online (Sandbox Code Playgroud)

对于文件和文件夹,您需要使用WinAPICommonOpenFileDialog附带的,特定的类在这里.

  • CommonOpenFileDialog并没有真正解决这个问题,因为它既可以选择多个文件夹,也可以选择多个文件,但不能同时使用(取决于属性IsFolderPicker).但是,是否可以以对话框更灵活的方式设置属性,即允许用户同时选择文件和文件夹?我需要为我正在编写的某种上传工具,用户应该能够选择他认为需要上传的任何东西...... (3认同)
  • 你忘记了"多个**文件夹**和文件"吗?我也想选择文件夹. (2认同)