如何获取ListView项的高度?

4

我有一个ListView,需要确定每个项目的高度。

3个回答

13
您可以使用GetItemRect()方法:
int itemHeight = yourListView.GetItemRect(itemIndex).Height;

2

我不确定百分之百,但这可能会有所帮助:

int itemHeight = listView.Items[itemIndex].GetBounds(ItemBoundsPortion.Entire).Height;

1
我有同样的问题,但是有一个问题-在列表视图绘制之前,值没有被设置。而且您可能希望在添加任何项目之前就能够设置大小(例如,如果我想要一个可以显示5个条目但一开始为空的列表视图)。
因此,我的解决方法是在应用程序的初始化部分运行以下代码,强制控件被渲染但不显示它,并将值保存为全局变量以供后续使用。为了解决具有不同字体大小的列表视图,只存储高度和字体高度之间的差异:
Dim lvwTemp As New ListView
lvwTemp.View = View.Details
lvwTemp.Columns.Add("test")
lvwTemp.Items.Add("test")
Dim zTempBitmap As New Bitmap(100, 100)
lvwTemp.DrawToBitmap(zTempBitmap, New Rectangle(0, 0, 100, 100))
zTempBitmap.Dispose()
gintListviewHeaderHeightMinusFontSize = lvwTemp.Items(0).GetBounds(ItemBoundsPortion.Entire).Top - lvwTemp.Font.Height
gintListviewItemHeightMinusFontSize = lvwTemp.Items(0).GetBounds(ItemBoundsPortion.Entire).Height - lvwTemp.Font.Height

这使得您可以非常轻松地获取列标题高度和项目高度 - 很棒! - Rick Morgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接