我如何使CommonOpenFileDialog只选择文件夹,但仍然显示文件

本文关键字:显示文件 文件夹 选择 何使 CommonOpenFileDialog | 更新日期: 2023-09-27 18:14:48

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

我当前的代码是这样的

var dialog = new CommonOpenFileDialog();
dialog.IsFolderPicker = true;
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
    SelectedFolderPath = dialog.FileName;
}

我如何使CommonOpenFileDialog只选择文件夹,但仍然显示文件

我就是这么做的

  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);

编辑:神圣的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();

不确定是否有可能以标准方式做到,但即使考虑到这一点,也可以考虑UI。在一个地方看到现代文件夹和文件,但是只能选择文件夹,对我来说似乎不是一个好的UI。在我看来,这是一种更好、更"自然"的方式,让一个控件填充文件夹,而另一个控件(显然是只读的)只填充必须加载的文件。

如果您希望用户只选择一个文件夹,您是否考虑过使用FolderBrowserDialog?