1. ホーム
  2. .net

[解決済み] [Solved] OpenFileDialogでフォルダを選択するように設定する方法は?

2022-04-07 07:02:50

質問

VS .NETで、プロジェクトのフォルダを選択する際に、OpenFileDialogやSaveFileDialogのようなダイアログが表示されますが、フォルダしか受け付けないように設定されているのですが、このようなダイアログはありますか? これを見たときから、どうなっているのか知りたかったのです。 FolderBrowserDialogのことは知っていますが、そのダイアログはあまり好きではありません。 小さすぎるし、パスを入力できる利点を生かしきれていないのです。

.NETからこれを行う方法がないことはもうほぼ確実ですが、アンマネージドコードからこれを行う方法にも同様に興味があります。 ダイアログをゼロから完全に再実装するのでなければ、どのようにダイアログを変更してこの動作をさせるのでしょうか?

また、FolderBrowserDialogの存在は知っているのですが、使いたくないときもあり、さらに、このようにダイアログを構成する方法に純粋に興味があることを再確認したいと思います。 FolderBrowserDialogを使うように言ってくれれば、一貫したUIエクスペリエンスを維持できますが、私の好奇心を満たさないので、回答としてカウントされません。

これもVista特有のものではなく、VS .NET 2003からこのダイアログを見るようになったので、Win2kやWinXPでも可能です。 これは、"正しい方法を知りたい"という質問というより、"VS 2003で初めてやりたいと思ったときから気になっていた"という質問ですね。 Vistaのファイルダイアログにこれを行うためのオプションがあることは理解していますが、XPで動作していたので、彼らが行ったことは知っています 何か を使えば動くようになります。 Vista特有の回答は、質問の文脈ではVistaが存在しないので、回答になっていません。

更新:Scott Wisniewskiの回答は、動作するサンプルが付属しているので、私はそれを受け入れますが、Sergeはダイアログのカスタマイズを指摘したことを評価されるべきだと思います(これは確かに.NETからは厄介ですが する また、Mark Ransomは、MSがこのタスクのためにカスタムダイアログを作成したのだろうと推測しています。

解決するには?

OpenFileOrFolderダイアログという、フォルダとファイルのどちらかを開くことができるダイアログを書きました。

AcceptFilesの値をfalseにすると、フォルダのみを受け入れるモードで動作します。

GitHubからソースをダウンロードすることができます。