2009/06/02

C#ListBoxのOwnerDraw

このエントリーをはてなブックマークに追加
LitBoxのOwnerDraw機能を初めて使ってみたけれどめちゃくちゃ楽しいです。
初めてというのは少し嘘だけど、まあ面倒くさいと言わないでもない。

DrawModeにOwnerDrawFixedを指定すると、描画用のDrawItemイベントが呼び出されるようになります。
DrawModeにOwnerDrawVariableを指定すると、DrawItemイベントに加えてMeasureItemイベントが呼ばれる。MeasureItemイベント内でアイテムの高さを指定できるので、リストアイテムの一行一行を可変サイズにしたければ、こちらを使用する。

そして、詰まった。というか解らない。
リストアイテムが空のときにもフォーカスが移るたびにDrawItemイベントが呼ばれて、e.Index=-1が取得できる(つまりアイテム未選択の状態)。
未選択時の描画処理を書いても、フォーカスが離れるとリスト内が真っ白に。
うむむ。
リストアイテムが空だから描画不要と判断しての仕様だろうか。仕様と言われればそれまでだけど。

0 件のコメント :

コメントを投稿