8

OpenFileDialogの動作を変更して、開いているフォルダー内のファイルの内部を調べ、その内容に基づいて特定のファイルを無視するようにする方法はありますか?

1つの例は、Zipファイルでいっぱいのフォルダーを開くことですが、特定のファイルを含むフォルダーのみを表示します。

ドキュメントから、HookProcがありますが、それをどのように使用するかは正確にはわかりません。

可能であれば、比較的遅い操作になると思いますのでご注意ください。現時点では、パフォーマンスについては心配していません。

ありがとう!

4

3 に答える 3

4

OpenFileDialogの複雑さを否定するつもりはありません。実際に機能するものを作成するのはそれほど簡単ではありません。独自に作成する場合、それは「通常の」ダイアログではなく、その結果、ユーザーを混乱させます。これは、上手くやっても当てはまりますが、それは難しいことです。ですから、何か新しいことを書くのではなく、すでにそこにあるものを拡張することに固執することをお勧めします。

この記事をチェックして、必要なことを正確に実行するために調整できる/調整できるOFDの拡張機能を確認してください。パスの選択に応答するC#で記述したコールバックがあります。

関連:FolderBrowserDialogExは、FolderBrowserDialogの同様の拡張機能です。名前にもかかわらず、フォルダだけでなくファイルも検索するように設定できます。何か(フォルダー、ファイル)が選択されたときに呼び出されるコールバックがあり、そのコールバック内で必要なことを実行できます。たとえば、フォルダ内のファイルを確認し、ファイルのリストにデータを入力して、それらのファイルのみを表示します。


検討する可能性のあるもう1つのオプションは、Ookiiのダイアログライブラリです。これはOpenFileDialogのオープンソース実装であり、Vistaのすべての新しいダイアログ用のCOMラッパーが含まれています。そのライブラリを使用すると、Vista OpenFileDialogをポップして、C#コードでIFileDialogEventsインターフェイスからイベントを受信できます。そのようなイベントの1つがOnFolderChange()です。ハンドラー内でIFolder.GetFolder()を呼び出すと、ユーザーが変更するフォルダーを提供するIShellItemが取得されます。次のステップは、ファイルのセットを項目化して潜在的にフィルタリングすることです。これは、読者に任せる演習です...

于 2009-06-01T23:35:57.010 に答える
1

いいえ、そのために独自の機能を実装する必要があります。しかし、正直なところ、OpenFileDialogは実際にはそれほど多くのことをしていません。正直なところ、ええ、おそらくそれにフックすることができますが、実際の作業がファイルのコンテンツを検査することである場合、あなたは何もせずに多くの作業を行うでしょう、そしてあなたはあなた自身の単純なOpenFileDialogクラスを上に書くことができますそれ。

この質問は、zipファイルの内容の一覧表示に関して役立つ場合があります。

.zipフォルダーの内容をC#で一覧表示するにはどうすればよいですか?

(パフォーマンスを向上させるためにスレッド化する可能性があることに注意してください。多くのスレッドにまたがらないでください)

于 2009-06-01T22:14:20.607 に答える
0

おそらく、Windows APIコードパック(ソースに付属)を使用できます。共通ファイルダイアログ機能は、Winforms/WPFのバージョンよりもはるかに多くのファイルダイアログの機能を公開します。

http://code.msdn.microsoft.com/WindowsAPICodePack

于 2009-08-01T23:20:04.450 に答える