Я все ближе и ближе разбираюсь в ObjectListView. Большая кривая обучения пытается преобразовать все примеры из C# в VB.net.ObjectListView BarRenderer в VB.net
У меня есть рабочий ObjectListView, который я создал для учебных целей.
Я пытаюсь создать BarRenderer, основанный на столбце высоты. Я закончил создание sub, который запускает FormatRow. Однако, когда отображается панель, они не так ожидаются. Я поставил Джо на 75 и Марию на 25. Я ожидаю, что бары будут соответственно 75% и 25% соответственно.
Возможно, есть способ сделать это, как я сделал с Imagegetter, но я не уверен, как это сделать. Я оставил код в качестве дополнительного примера.
Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
Dim LvLst As New List(Of Person)
Dim LvItm As New Person With {.FirstName = "Joe",
.LastName = "Blow",
.Glasses = "Y",
.Height = "75"}
LvLst.Add(LvItm)
Dim LvItm2 As New Person With {.FirstName = "Mary",
.LastName = "Swanson",
.Glasses = "N",
.Height = "25"}
LvLst.Add(LvItm2)
ObjectListView3.View = View.Details
Dim myImages = New ImageList
myImages.Images.Add(My.Resources.Hipster_Glasses_icon)
myImages.Images.Add(My.Resources.Button_important_icon)
ObjectListView3.SmallImageList = myImages
ObjectListView3.OwnerDraw = True
Col_Glasses.ImageGetter = Function(x As Object) As Integer
Dim casted As Person = DirectCast(x, Person)
If casted.Glasses = "Y" Then
Return 0
Else
Return 1
End If
End Function
ObjectListView3.SetObjects(LvLst)
End Sub
Private Sub lsv_OpenTickets_FormatRow2(sender As Object, e As FormatRowEventArgs) Handles ObjectListView3.FormatRow
Dim tkt As Person = DirectCast(e.Model, Person)
Col_Height.Renderer = New BarRenderer(tkt.Height, 100, Pens.Black, Brushes.Gold)
End Sub
Я использую этот сайт в качестве ссылки: http://objectlistview.sourceforge.net/cs/ownerDraw.html#owner-draw-label