Microsoftの 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 [〜#〜]について考えてみてください。現代のフォルダとファイルを1つの場所で見ることができますが、のみフォルダを選択できるので、私には良いUIではないようです。私見では、1つのコントロールにフォルダーを設定し、別のコントロール(明らかに読み取り専用)にロードする必要のあるファイルのみを入力する方が適切で、より「自然な」方法です。
お役に立てれば。
ユーザーにフォルダーのみを選択させたい場合は、FolderBrowserDialogの使用を検討しましたか?