コンテンツに基づいてOpenFileDialogに示したファイルのフィルタリング?

StackOverflow https://stackoverflow.com/questions/937061

  •  06-09-2019
  •  | 
  •  

質問

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

一つの例は、Zipファイルの完全なフォルダに開くだけで、特定のファイルが含まれているものを表示するようになります。

は、ドキュメントから、HookProcありますが、私は、私はそれを使用したい方法を正確にはわからない。

それが可能であるならば、私はそれが比較的低速運転になるだろうことを認識していることに注意してください。現時点では私はパフォーマンスが心配ないよ。

ありがとうございます。

役に立ちましたか?

解決

私はOpenFileDialogの複雑さを却下しません。それは実際に動作するものを構築するので、簡単ではありません。あなたがあなた自身を構築しない場合は、「通常の」ダイアログではありませんし、その結果として、それがユーザーを混乱させる。これは困難である、あなたもそれを行う場合も同様です。だから私は、あなたがすでにそこにあるもの拡張ではなく、新しいものを書くに固執することをお勧めしたいです。

/可能性がありますOFD での拡張のためにこの記事をチェックしてください正確にあなたがやりたい微調整。あなたはパス選択に応答C#で記述したコールバックがあります。

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

<時間>

あなたは検討するかもしれない別のオプションはOokiiするからダイアログライブラリです。これは、OpenFileDialogのオープンソース実装であり、それはVistaのすべての新しいダイアログのもののためのCOMラッパーを含んでいます。そのライブラリを使用して、あなたがVistaのOpenFileDialogをポップし、 IFileDialogEvents C#コードでインタフェース。そのようなイベントがOnFolderChangeです()。ハンドラ内で、あなたはあなたの<のhref =「http://msdn.microsoft.com/en-us/library/bb761144(VS.85).aspx」のrel = "nofollowのを取得するどのIFolder.GetFolder()を呼び出すことができますあなたはユーザが変更されているフォルダを与えるnoreferrer "> IShellItem を、。次のステップは、私が読者に残す運動であるファイルのセットを、箇条書き、潜在的にフィルタリングするだろう...

他のヒント

いいえ、あなたはそのための独自の機能を実装する必要があります。しかし、正直に言うと、OpenFileDialogは本当にとにかく全体の多くを行いません。正直に言うと、ええ、あなたはおそらくそれにフックできましたが、実際の作業は、ファイルの内容を検査し、その後、あなたがの上に独自のシンプルなOpenFileDialogクラスを記述することができたとき、あなたは何のために多くの仕事をやっていると思いますそのます。

あなたは、zipファイルの内容をリストに関するこの質問は役に立ち見つけるかもしれない:

Aの内容を一覧表示する方法C#での.zipファイルのフォルダですか

(ただ、多くのスレッドをまたがらない、あなたは潜在的にそれがパフォーマンスを向上させるために、スレッド可能性があり、注意してください)。

あなたはおそらく、WindowsのAPIコードパック(ソースが付属しています)を使用することができます。コモンファイルダイアログの機能は、Winformsの/ WPFでのバージョンよりファイルダイアログの多くの機能を公開します。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top