1

C# でファイルとフォルダーのダイアログを作成しようとしています。(ただの警告:私はすべてFolderBrowserDialogの提案に反対票を投じます。そのダイアログは自然の忌み嫌うものです)

現在CommonOpenFileDialog、プロパティを持つ WindowsApiCodePack にある を使用していますIsFolderPicker。これにより、ダイアログはフォルダー ピッカーのみになります。しかし、ユーザーがファイルまたはフォルダーのいずれかを選択できる必要があります。

そこで、ファイルとフォルダの両方を選択できるダイアログを探しています。手段は問わない。C#、WPF、WindowsApiCodePack、Ookii ダイアログ、C++、P/Invoke、Com+、Win32、VB など...

C# から呼び出すことができ、デフォルトの Windows OpenFileDialog の外観を持つ、ファイルまたはフォルダーを選択できるコントロールが必要なだけです。これは可能ですか?

4

1 に答える 1

1

FolderBrowser数年前にダイアログをカスタマイズしました。ユーザーがパスを参照せずにパスを指定できる入力フィールドを表示するようにしました。フォルダだけでなくファイルも表示するようにカスタマイズできると思います。

これが私がカスタマイズを行った方法です:

.NETReflectorを使用して。のコードを分解しましたFolderBrowserDialog。分解したコードをとして保存しましたMyFolderBrowserDialog

反映されたコードで、構造体をパラメーターとして受け入れるFolderBrowserDialogアンマネージウィンドウ関数を呼び出すことがわかりました。構造体には、使用する機能を含めるためにビットマスクされる可能性のあるフラグ値であるメンバーがあります。SHBrowseForFolderBROWSEINFOBROWSEINFOulFlags

入力フィールドを取得するためにビットMyFolderBrowserDialogマスクBIF_EDITBOX (0x00000010)されています。ulFlags

ドキュメントによると、ビットマスクBIF_BROWSEINCLUDEFILES (0x00004000)ulFlags使用する場合は、フォルダだけでなくファイルも含める必要があり、問題を解決できます。

実際にファイルを表示しようとはしていませんが、一見の価値があると思います。

お役に立てれば!

于 2013-01-31T08:37:18.233 に答える