2009-07-24 5 views
3

誰でも私にListViewの水平スクロールバーの高さをCで教えてもらえますか?それは標準の水平スクロールバーと同じですか?もしそうなら、それを返すウィンドウ関数がありますか?基本的に私はOwnerDrawでListViewを使用していて、ColumnHeader領域とHorizo​​ntalScrollbar領域を除外したクライアント領域の大きさを正確に知りたいと思っています。ListViewで水平スクロールバーの高さを取得する方法

おかげ

答えて

10
+0

おかげフレドリック! – Jefe

+0

これで、ColumnHeaderの高さも計算する必要があります。DrawColumnHeaderイベントハンドラでBoundsを使用して高さを取得できますが、イベントハンドラが実行される前にこの値が必要です。 – Jefe

+0

okまた、一時アイテムをリストに追加してアイテム[0] .Bounds.Topを取得したくないと追加する必要があります。リストビューが空であるとします。 – Jefe

2

Control.ClientRectangleは、スクロールバーと境界を除きます。 SystemInformation.HorizontalScrollBarHeightSystemInformation.VerticalScrollBarWidthが存在しない、いくつかのP /呼び出しが必要とされている.NET CF、オン

listView1.Scrollable = true; 
    Console.WriteLine(listView1.ClientRectangle); 
    Console.WriteLine(listView1.Size); 
    listView1.Scrollable = false; 

    Console.WriteLine(listView1.ClientRectangle); 
    Console.WriteLine(listView1.Size); 
0

public sealed class Native 
{ 
    public static Int32 GetVerticalScrollbarWidth() 
    { 
     return GetSystemMetrics(SM_CXVSCROLL); 
    } 

    public Int32 GetHorizontalScrollbarHeight() 
    { 
     return GetSystemMetrics(SM_CYHSCROLL); 
    } 

    [DllImport("coredll.dll", SetLastError = true)] 
    public static extern Int32 GetSystemMetrics(Int32 index); 

    public const Int32 
     SM_CXVSCROLL = 2, 
     SM_CYHSCROLL = 3; 
} 
関連する問題