VB.NETでフォルダ内の全ファイルのアイコンを表示するプログラムを
作成しています。
ファイルアイコンをイメージリストに追加した後、
表示をしているのですが、
同じアイコンを表示しないよう、
ファイルからアイコンを取得した後、
イメージリスト内に既に登録されていない場合のみ
イメージリストに追加するようにしたいのですが、
アイコン同士を比較する方法が分かりません。
Iconオブジェクト、またはImageオブジェクト同士を
比較することはできるのでしょうか。
また、できるのであれば、どのように行えばよろしいでしょうか。
ご教授願います。
直接Iconオブジェクトを比較するのは、わかりませんが、
もし、ファイルアイコンの取得に、SHGetFileInfoを使っているのでしたら、
イメージリスト登録のキーをアイコンハンドルか何かすれば、
そのアイコンハンドルで判断できるのはないのかと思いますが。
どうでしょうか?
YUUさんありがとうございます。
実はVB6でのサンプルソースをVB.NET用に書き直したのですが、
サンプルで使用しているImageListにはKeyプロパティがあり、
そこにSHGetFileInfoで取得したキーを入れて比較を行っていました。
同じことを.NETで行おうとしたのですが、.NET標準のImageListには
Keyプロパティが存在しないようで、困っています。
このため、ImageListに追加するIconクラスを継承してKeyプロパティを
自前で用意しようと思ったのですが、NotInheritableのため継承できず、
Iconオブジェクト同士を比較しようにも方法が分からず、
仕方なくお聞きした次第で。
現在、ImageListとは別にKey配列をつくり、
そこにSHGetFileInfoで取得したキーを入れて
なんとか対処しています。
もっといいやり方や、
.NETならではの方法がありましたら、
ご教授願います。
ツイート | ![]() |