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