18

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

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

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

if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
    SelectedFolderPath = dialog.FileName;
}
4

3 回答 3

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

编辑:神圣的 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();
于 2013-11-20T17:03:52.970 回答
0

不太确定是否可以以标准方式进行,但即使考虑到是的,请考虑UI。在一个地方看到现代文件夹和文件,但只能选择文件夹,在我看来并不是一个好的 UI。恕我直言,更好、更“自然”的方式是让一个控件填充文件夹,而另一个控件(显然是只读的)只填充必须加载的文件。

希望这可以帮助。

于 2011-11-15T20:45:41.010 回答
-2

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

于 2011-11-15T21:02:29.357 回答