У меня был тот же вопрос, но есть одна проблема - до тех пор, пока не будет отображен список, значения не установлены.И вы можете захотеть установить размеры, прежде чем добавлять какие-либо элементы (если, например, я хочу высушить просмотр списка, который может отображать 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