DOBON.NET DOBON.NETプログラミング掲示板過去ログ

【C#】ExplorerBrowserControlのカラムヘッダについて

環境/言語:[Windows7,C#]
分類:[.NET]


初めまして。

C#でExplorerBrowserControlを使用して、
フォルダ内のアイテムを表示しています。

その際、ファルダと特定の拡張子を持つファイル以外は
表示したくないのですが、制御方法がわかりません。
カラムヘッダの「種類」タブをプログラム内で操作できれば、
表示を制限できると思うのですが、方法がわかるかた
いらっしゃいましたら、ご教授ください。

よろしくお願い致します。
// 目的はフィルタリングですよね?
// 「種類」列をどう操作すればフィルタリングになるんでしょうか……?

少なくとも、既存のプロパティやイベントだけで対応できるものではなさそうです。
ライブラリに手を加える場合、自分で使うだけならともかく、再頒布を行うならライセンスをご確認ください。
また改造するには COM やネイティブ関数を利用するための知識が必要です。そうでないなら諦めた方が良いかもしれません。

http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/252a9c82-617c-4126-8347-56dcedb4342f
こちらの冒頭に二つほど方法がまとめられていますね。
API CodePack から利用しやすいのは 2 の方でしょうか。
ICommDlgBrowser::IncludeObject(リンク先は IncludeItem になってますが)自体はすでに実装済みなので、ここにフィルタリング用のコードを仕込めば対応できそうです。

ただ、リンク先にもあるように Windows 7 の「ライブラリ」など特殊なフォルダに対しては無効になるようです。
ちらっと見た感じ、これの回避策はなさそうですね。IFileDialog をカスタマイズしてそれっぽく見せたらどうだ、なんて冗談か本気か分からない意見もありましたが。

DOBON.NET | プログラミング道 | プログラミング掲示板