我如何使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;
}
我就是这么做的
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?