none
OwnerDraw することなく ListBox の ItemHeight を 変更できますか? RRS feed

  • 質問

  • ListBox の Item の高さは ItemHeight で設定変更できるもんだ、と思っていたのですが、

    OwnerDraw しなければならないのでしょうか?

     

    初期値 12px ですが、余りにも Item 間が接近しすぎていて見づらいので、

    24px と設定すれば、高さ 24px で表示されると思っていたのですが。

     

     


    - ListBox.ItemHeight プロパティ

    Code Snippet

    DrawMode プロパティが DrawMode.OwnerDrawFixed に設定されている場合は、
    すべての項目の高さが同じになります。

     

    同じ高さになる、のは分かるけど、高さ変更の可不可は読み取れない。

     


    Code Snippet
    DrawMode プロパティが DrawMode.OwnerDrawVariable に設定されている場合、
    ItemHeight プロパティは、ListBox に追加された各項目の高さを指定します。

     

    個々に高さを変更可能であることは分かるが。

    2008年3月23日 0:33

回答

  •  

    OwnerDrawじゃないと駄目みたいですね。

    出来ると書いてないということは、出来ないということだ。。。と好意的に解釈すると不満は残るけど納得かなぁ。

     

    もしかすると翻訳が、いけてなくてこういう表現になってるのかもしれません。

    でも、VS2008 Expressのプロパティウィンドウに表示される説明は非常に明確だったりします。

     

    引用
    ItemHeight
    高さ固定のオーナー描画リストボックス内の項目のピクセルでの高さです。

    2008年3月24日 11:13

すべての返信

  •  

    OwnerDrawじゃないと駄目みたいですね。

    出来ると書いてないということは、出来ないということだ。。。と好意的に解釈すると不満は残るけど納得かなぁ。

     

    もしかすると翻訳が、いけてなくてこういう表現になってるのかもしれません。

    でも、VS2008 Expressのプロパティウィンドウに表示される説明は非常に明確だったりします。

     

    引用
    ItemHeight
    高さ固定のオーナー描画リストボックス内の項目のピクセルでの高さです。

    2008年3月24日 11:13
  •  +かずき+ さんからの引用

    OwnerDrawじゃないと駄目みたいですね。


    そうなのでしょうねぇ、やっぱり。面倒。

     

     +かずき+ さんからの引用

    もしかすると翻訳が、いけてなくてこういう表現になってるのかもしれません。


    そうかもしれません。可能性は低いけど、念のため確認しておきます。

    + 追記 : 案の定書いてありませんでした。

     

     

    +かずき+ さん、情報ありがとうございます。

     

    いや、こうすれば ItemHeight だけで有効になるぞ、という情報がありましたら、
    他の方からの情報も引き続きお待ちしています。

    2008年3月24日 13:55
  • ListBox のソースを見ると、以下のようにして高さを設定していました。

    value というのが具体的な ItemHeight 値です。

     

    SendMessage() 呼ぶくらいなら OwnerDraw します。

    いや、ん~、それでも何とかして欲しい。面倒。

     

    そもそも何故 ItemHeight で高さを変えちゃ駄目なんだろう?

     

    Code Snippet

     

    SendMessage(NativeMethods.LB_SETITEMHEIGHT, 0, value);

     

     

     

    参考
    - Re: Can't get DrawItem event any more, in some special case

     

    2008年3月27日 14:50