Как я могу сделать CommonOpenFileDialog только выбор папок, но все же показывать файлы?
Я использую Microsoft CommonOpenFileDialog, чтобы позволить пользователям выбирать папку, но при появлении диалога файлы не видны. Можно ли показывать файлы, а также папки, если для параметра IsFolderPicker
установлено значение true?
Мой текущий код выглядит следующим образом
var dialog = new CommonOpenFileDialog();
dialog.IsFolderPicker = true;
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
SelectedFolderPath = dialog.FileName;
}
Ответы
Ответ 1
Сверху моей головы, вот как я это сделал
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);
EDIT: Holy 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();
Ответ 2
Не очень уверен, что даже это можно сделать стандартным способом, но даже учитывая, что да, подумайте о пользовательском интерфейсе. Видеть современные папки и файлы в одном месте, но иметь возможность выбирать только папки, не кажется мне хорошим пользовательским интерфейсом. ИМХО это лучше и более "естественным" способом, чтобы иметь один элемент управления, заполненный папками, а другой (явно только для чтения), заполненный только файлами, которые необходимо загрузить.
Надеюсь, что это поможет.
Ответ 3
Если вы хотите, чтобы пользователь выбирал только папку, рассмотрели ли вы использование FolderBrowserDialog?