2009-07-24 98 views
3

谁能告诉我如何获得C#中ListView中水平滚动条的高度?它是否与标准的水平滚动条相同,如果有的话,是否有任何窗口函数返回?基本上我使用ListView和OwnerDraw,并且想知道排除ColumnHeader区域和Horizo​​ntalScrollbar区域的客户区域有多大。如何获得ListView中水平滚动条的高度

感谢

回答

2

Control.ClientRectangle不包括滚动条和边框。

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

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

基于.NET CF,其中SystemInformation.HorizontalScrollBarHeightSystemInformation.VerticalScrollBarWidth不存在,一些的P/Invoke是必需的:

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; 
}