18

MicrosoftのCommonOpenFileDialogを使用して、ユーザーがフォルダーを選択できるようにしていますが、ダイアログが表示されたときにファイルが表示されません。IsFolderPickertrueに設定されている場合、ファイルとフォルダを表示することはできますか?

私の現在のコードは次のようになります

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について考えてみてください。現代のフォルダとファイルを1つの場所で見ることができても、フォルダしか選択できないので、私には良いUIではないようです。私見では、1つのコントロールにフォルダーを設定し、別のコントロール(明らかに読み取り専用)にロードする必要のあるファイルのみを設定する方が適切で、より「自然な」方法です。

お役に立てれば。

于 2011-11-15T20:45:41.010 に答える
-2

ユーザーにフォルダーのみを選択させたい場合は、FolderBrowserDialogの使用を検討しましたか?

于 2011-11-15T21:02:29.357 に答える