Как я могу получить высоту элемента ListView?

#c# #winforms

#c# #.net #winforms #listview

Вопрос:

У меня есть ListView, и мне нужно определить высоту элемента.

Ответ №1:

Вы можете использовать метод GetItemRect():

 int itemHeight = yourListView.GetItemRect(itemIndex).Height;
  

Ответ №2:

Я не уверен на 100%, но это может помочь:

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

Ответ №3:

У меня был тот же вопрос, однако есть одна проблема — пока listview не будет отрисован, значения не будут установлены. И вы можете захотеть иметь возможность устанавливать размеры перед добавлением каких-либо элементов (если, например, я хочу высушить listview, который может отображать 5 записей, но будет начинаться с пустого).

Поэтому мой обходной путь состоял в том, чтобы запустить следующий код, который заставляет элемент управления отображаться, но без его отображения, в разделе инициализации приложения и сохранить значения как глобальные переменные для последующего использования. И, чтобы обойти listviews с разными размерами шрифта, хранить только разницу между высотой и высотой шрифта:

 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
  

Комментарии:

1. Это позволяет вам очень легко получить высоту заголовка столбца и высоту элемента — приятно!