如何仅使CommonOpenFileDialog选择文件夹,但仍显示文件?

Rac*_*hel 15 c# openfiledialog windows-api-code-pack

我使用Microsoft的CommonOpenFileDialog来允许用户选择文件夹,但是当对话框出现时没有文件可见.当IsFolderPicker设置为true 时,是否可以显示文件和文件夹?

我目前的代码看起来像这样

var dialog = new CommonOpenFileDialog();
dialog.IsFolderPicker = true;

if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
    SelectedFolderPath = dialog.FileName;
}
Run Code Online (Sandbox Code Playgroud)

Ski*_*927 9

在我的头顶,这就是我做到的

  var dialog = new CommonOpenFileDialog
  {
    EnsurePathExists = true,
    EnsureFileExists = false,
    AllowNonFileSystemItems = false,
    DefaultFileName = "Select Folder",
    Title = "Select The Folder To Process"
  };


  dialog.SetOpenButtonText("Select Folder");

  if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
  dirToProcess = Directory.Exists(dialog.FileName) ? dialog.FileName : Path.GetDirectoryName(dialog.FileName);
Run Code Online (Sandbox Code Playgroud)

编辑:神圣2年前蝙蝠侠!


似乎进行了一些改动,下面的片段似乎可以完成这项工作

var openFolder = new CommonOpenFileDialog();
openFolder.AllowNonFileSystemItems = true;
openFolder.Multiselect = true;
openFolder.IsFolderPicker = true;
openFolder.Title = "Select folders with jpg files";

if (openFolder.ShowDialog() != CommonFileDialogResult.Ok)
{
    MessageBox.Show("No Folder selected");
    return;
}

// get all the directories in selected dirctory
var dirs = openFolder.FileNames.ToArray();
Run Code Online (Sandbox Code Playgroud)

  • -1第一个解决方案不允许用户选择文件夹,只允许文件.第二个解决方案不会像OP询问的那样在文件夹中显示文件.Windows 10,也许这改变了? (2认同)