仮想ListViewでIconを表示させるのは諦めたらあかん!
前回、ListViewを仮想ListViewにしたとき、イメージの表示ができなかった。
んで、しょうがないので自作のリストコントロールを使うという結論になったのだが、IFをListViewにすれば、普通のListViewと置き換えが簡単にできるじゃないかと思った。
この思いつきから、紆余曲折が始まる。
- ListViewを継承して、すべてのメソッドを実装すれば、親クラス(この場合はListView)の変数でListViewとListViewを継承したカスタムコントロールを管理できるようになるから、もっと楽になる。
というわけで、継承させてみた。 - すべてのメソッドをoverrideしなくても、良いじゃん。必要なものだけ実装すれば良いじゃん。
- どうやって、ユーザコントロールを表示すれば良いんだろう?
→答え:ListView自身をベースにして、ListViewのControlsメンバに対して、Addメソッドを使えば、コントロールを表示できる。
objMovieInfo_ = new controlMovieDownloadInfo();
this.Controls.Add(objMovieInfo_); - ん?コントロールを表示できるってことは・・・。
仮想ListViewに対してImageのContorlを追加すれば、仮想ListViewでもイメージを表示できるじゃないか・・・。
というわけで、ListViewのカスタムコントロールを作って、Imageを表示できるようにしてみることにする。
スクロールでの位置決めがめんどくさそうだ。どうやって行と列のスクロール状態(位置)を取得するか調べなければ。
ListViewについてのMSDNの以下の記述を確認するべし。
「また、ListView コントロールの外観を完全にカスタマイズすることもできます。これを行うには、OwnerDraw プロパティを true に設定し、DrawItem、DrawSubItem、DrawColumnHeader の各イベントのいずれか 1 つ以上を処理します。」
あと、仮想ListViewの表示されているListViewItemも、ListViewのカスタムコントロールで管理すれば、仮想じゃないときと仮想のときと扱い方を統一できる。いちいちこちら側で表示項目を渡さなくても、ListViewItemを渡しているんだから、それで管理して欲しいよな。
こんな感じでやってみよう。
時間があれば。
コメント