C# 如何在ListView中获取水平滚动条的高度

C# 如何在ListView中获取水平滚动条的高度,c#,C#,谁能告诉我如何在C#中获得ListView中水平滚动条的高度?它是否与标准水平滚动条相同,如果是,是否有任何windows函数返回该值?基本上,我使用的是带有OwnerDraw的ListView,我想知道我的客户端区域到底有多大,不包括ColumnHeader区域和HorizontalScrollbar区域 谢谢你的控制。ClientRectangle不包括滚动条和边框 listView1.Scrollable = true; Console.WriteLine(listView

谁能告诉我如何在C#中获得ListView中水平滚动条的高度?它是否与标准水平滚动条相同,如果是,是否有任何windows函数返回该值?基本上,我使用的是带有OwnerDraw的ListView,我想知道我的客户端区域到底有多大,不包括ColumnHeader区域和HorizontalScrollbar区域


谢谢你的控制。ClientRectangle不包括滚动条和边框

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

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

在.Net CF上,其中
SystemInformation.HorizontalScrollBarHeight
SystemInformation.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;
}

好的,现在我还需要计算ColumnHeader的高度,我知道我可以使用DrawColumnHeader事件处理程序中的边界来获取高度,但在执行该事件处理程序之前我需要这个值。好的,我还应该补充一点,我不想将临时项添加到列表中并获取项[0]。Bounds.Top,所以假设listview为空。