.NETでIconオブジェクトの比較をするには?


たき  2004-09-04 08:01:13  No: 85428

VB.NETでフォルダ内の全ファイルのアイコンを表示するプログラムを
作成しています。

ファイルアイコンをイメージリストに追加した後、
表示をしているのですが、
同じアイコンを表示しないよう、
ファイルからアイコンを取得した後、
イメージリスト内に既に登録されていない場合のみ
イメージリストに追加するようにしたいのですが、
アイコン同士を比較する方法が分かりません。

Iconオブジェクト、またはImageオブジェクト同士を
比較することはできるのでしょうか。
また、できるのであれば、どのように行えばよろしいでしょうか。
ご教授願います。


YUU  2004-09-06 18:20:08  No: 85429

直接Iconオブジェクトを比較するのは、わかりませんが、
もし、ファイルアイコンの取得に、SHGetFileInfoを使っているのでしたら、
イメージリスト登録のキーをアイコンハンドルか何かすれば、
そのアイコンハンドルで判断できるのはないのかと思いますが。

どうでしょうか?


たき  2004-09-08 02:13:26  No: 85430

YUUさんありがとうございます。

実はVB6でのサンプルソースをVB.NET用に書き直したのですが、
サンプルで使用しているImageListにはKeyプロパティがあり、
そこにSHGetFileInfoで取得したキーを入れて比較を行っていました。

同じことを.NETで行おうとしたのですが、.NET標準のImageListには
Keyプロパティが存在しないようで、困っています。
このため、ImageListに追加するIconクラスを継承してKeyプロパティを
自前で用意しようと思ったのですが、NotInheritableのため継承できず、
Iconオブジェクト同士を比較しようにも方法が分からず、
仕方なくお聞きした次第で。

現在、ImageListとは別にKey配列をつくり、
そこにSHGetFileInfoで取得したキーを入れて
なんとか対処しています。

もっといいやり方や、
.NETならではの方法がありましたら、
ご教授願います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加