ディレクトリダイアログを開く 質問する

ディレクトリダイアログを開く 質問する

ユーザーに、これから生成するファイルを保存するディレクトリを選択させたいと思っています。WPF ではOpenFileDialogWin32 から を使用する必要があることはわかっていますが、残念ながらダイアログではファイルを選択する必要があります。選択せずに [OK] をクリックするだけでは、ダイアログは開いたままになります。ユーザーにファイルを選択してもらい、パスを削除してどのディレクトリに属しているかを判断できるようにすることで、機能を「ハック」することもできますが、それは直感的ではありません。これを見たことがある人はいますか?

ベストアンサー1

2023年更新:ついに.NET 8でWPFはネイティブでモダンなOpenFolderDialog:

var folderDialog = new OpenFolderDialog
{
    // Set options here
};

if (folderDialog.ShowDialog() == true)
{
    var folderName = folderDialog.FolderName;
    // Do something with the result
}

これは、マイクロソフトがWPFに欠けている機能を追加するためにリソースを投入することを意味するのでしょうか?もちろん違います!マイクロソフトの従業員は忙しいのですクラウドネイティブな AI ベースの<その他の流行語を挿入> Teams チャットボットを構築できます現実の退屈なビジネスニーズを解決するためにWPFを修正するといった日常的な作業は、Janのようなコミュニティボランティアに任されています。このフォルダブラウザダイアログを.NETに追加したのは誰ですか


.NET Framwork 4.8 の古い回答:

内蔵のフォルダー ブラウザー ダイアログこのクラスです。名前空間内にあることは気にしないでくださいSystem.Windows.Forms

using (var dialog = new System.Windows.Forms.FolderBrowserDialog())
{
    System.Windows.Forms.DialogResult result = dialog.ShowDialog();
}

ウィンドウをWPFウィンドウ上でモーダルにしたい場合は、質問を参照してください。WPF アプリケーションから FolderBrowserDialog を使用する方法


編集:シンプルで見苦しい Windows フォームの FolderBrowserDialog よりも少し凝ったものが必要な場合は、代わりに Vista ダイアログを使用できる代替手段がいくつかあります。

  • サードパーティのライブラリ、例えばおおきいダイアログ(.NET 4.5 以上)

  • Windows API コード パック シェル:

      using Microsoft.WindowsAPICodePack.Dialogs;
    
      ...
    
      var dialog = new CommonOpenFileDialog();
      dialog.IsFolderPicker = true;
      CommonFileDialogResult result = dialog.ShowDialog();
    

    このダイアログは Windows Vista より前のオペレーティング システムでは使用できないので、必ずCommonFileDialog.IsPlatformSupported事前に確認してください。

おすすめ記事