Как получить целевую папку - PullRequest
0 голосов
/ 01 июня 2018

Я был только на Диалог открытия каталога , и они сказали: «Возьми этот пакет, и сделай это, и это, чтобы открыть окно выбора папки».Хорошо, что все отлично работает, используя пакет Windows API Code Pack-Shell.Однако теперь я хочу получить выбранную папку.Я не заметил, чтобы они упоминали это где-либо.

Я пытался сделать string folderLocation = Convert.ToString(dialog); (диалоговое окно - это переменная для открытия окна папки), но это только дало мне свойство переменной.Я также попробовал это: CommonFileDialogResult result = dialog.ShowDialog(); string folderLocation = Convert.ToString(result);

Но это просто дало мне «ОК» - что я понимаю, это результат, а не фактическая папка.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Если я правильно понял, вы хотите получить папку для выбранного файла?Если это так, вы можете взять FileInfo для этого файла и извлечь его из него.Вот так:

System.IO.FileInfo fInfo = new System.IO.FileInfo(oFD1.FileName);
MessageBox.Show(fInfo.DirectoryName);

PS.oFD1 - это OpenFileDialog

0 голосов
/ 01 июня 2018

Результат ShowDialog просто указывает, нажал ли пользователь кнопку ОК, отменить или просто закрыл окно.CommonOpenFileDialog может использоваться как для файлов, так и для папок, поэтому это немного удивительно, когда используется как средство выбора папок, но путь хранится в FileName.

var dlg = new CommonOpenFileDialog();
dlg.IsFolderPicker = true;
if(dlg.ShowDialog() == CommonFileDialogResult.Ok) {
    Console.WriteLine(dlg.FileName);
}
...