- - PR -
ListViewのオーナードローについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-03-20 02:02
こんにちは
System.Windows.Forms.ListViewのOwnerDrawをtrueにして ヘッダを描画しようとしています。(エクスプローラ風のソート順矢印を表示させたいのです) そこで、DrawColumnHeaderイベントのハンドラ内で描画を行っているのですが イベント引数のStateプロパティで期待した値が取れません。 マウスカーソルがヘッダに重ねられて描画イベントが発生したときには"Hot"、 ヘッダからカーソルが離れたときには"Default"か何かであって欲しいのですが、 実際はどちらでも"ShowKeyboardCues"となります。 どうにかして2つの状態(カーソルのあり/なし)を判断したいのですが、 どのような方法がありますでしょうか? 環境はXP + .NET Framework 2.0 以降です。ちなみにXP+2.0環境ですと e.ForeColorがカーソルありのときColor.Navy、なしのときColor.Blackとなるのですが Vista+3.5では常にColor.Blackとなり、判断がつきませんでした。 以下、State他の確認コードです
どなたか、ご経験のある方にヒントなりを頂ければ幸いです。 | ||||
|
投稿日時: 2009-03-24 00:23
自己レスです。
一応以下のようにしてイベントが発生した際のカーソルの座標位置によって判断できそうです。
上記ですとヘッダ間のカーソル移動のときに微妙に判定がずれるようですので微調整が必要かもしれません。 自分はめんどくさかったんでマウスカーソルの有無で描画を変えるのを放棄しました^^; 押された状態であるListViewItemStates.SelectedはStateから判断できるんでそれのみ対応しました。 ListViewItemStatesのSelectedとShowKeyboardCues以外の値はいつどこでだれが返してくれるんだろうなぁ、と思う仲春のこの頃です。 [ メッセージ編集済み 編集者: 未記 編集日時 2009-03-24 00:49 ] |
1