2024年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
無料ブログはココログ

 

« 雪 | トップページ | 今日届いたモノ »

2010年2月 3日 (水)

仮想ListViewでIconを表示させるのは諦めたらあかん!

前回、ListViewを仮想ListViewにしたとき、イメージの表示ができなかった。
んで、しょうがないので自作のリストコントロールを使うという結論になったのだが、IFをListViewにすれば、普通のListViewと置き換えが簡単にできるじゃないかと思った。
この思いつきから、紆余曲折が始まる。

  1. ListViewを継承して、すべてのメソッドを実装すれば、親クラス(この場合はListView)の変数でListViewとListViewを継承したカスタムコントロールを管理できるようになるから、もっと楽になる。
    というわけで、継承させてみた。
  2. すべてのメソッドをoverrideしなくても、良いじゃん。必要なものだけ実装すれば良いじゃん。
  3. どうやって、ユーザコントロールを表示すれば良いんだろう?
    →答え:ListView自身をベースにして、ListViewのControlsメンバに対して、Addメソッドを使えば、コントロールを表示できる。
    objMovieInfo_ = new controlMovieDownloadInfo();
    this.Controls.Add(objMovieInfo_);
  4. ん?コントロールを表示できるってことは・・・。
    仮想ListViewに対してImageのContorlを追加すれば、仮想ListViewでもイメージを表示できるじゃないか・・・。

というわけで、ListViewのカスタムコントロールを作って、Imageを表示できるようにしてみることにする。
スクロールでの位置決めがめんどくさそうだ。どうやって行と列のスクロール状態(位置)を取得するか調べなければ。
ListViewについてのMSDNの以下の記述を確認するべし。
「また、ListView コントロールの外観を完全にカスタマイズすることもできます。これを行うには、OwnerDraw プロパティを true に設定し、DrawItem、DrawSubItem、DrawColumnHeader の各イベントのいずれか 1 つ以上を処理します。」

あと、仮想ListViewの表示されているListViewItemも、ListViewのカスタムコントロールで管理すれば、仮想じゃないときと仮想のときと扱い方を統一できる。いちいちこちら側で表示項目を渡さなくても、ListViewItemを渡しているんだから、それで管理して欲しいよな。

こんな感じでやってみよう。
時間があれば。

« 雪 | トップページ | 今日届いたモノ »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 仮想ListViewでIconを表示させるのは諦めたらあかん!:

« 雪 | トップページ | 今日届いたモノ »