我离理解ObjectListView越来越近了。最大的学习曲线是尝试将所有示例从C#转换为VB.net。
我有一个工作的ObjectListView,我创建它是为了学习的目的。
我正在尝试创建一个基于高度列的BarRenderer。最后我创建了一个从FormatRow中触发的子程序。然而,当条形图显示时,它们并不像预期的那样。我让乔75岁,玛丽25岁。我预计酒吧将分别满员75%和25%。
也许有一种方法可以做到这一点,就像我对图像机所做的那样,但我不确定是如何做到的。我把代码放在那里作为一个额外的例子。
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
发布于 2016-01-29 19:13:30
明白了!
实际上,当BarRenderer自动读取该值时,我试图将该值提供给它。你只需为条子提供最小和最大的值,它就会创建它。
Col_Height.Renderer =新BarRenderer(0,100,Pens.Black,Brushes.Gold)
实际上,您甚至不需要FormatRow事件:
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
Col_Height.Renderer = New BarRenderer(0, 100, Pens.Black, Brushes.Gold)
ObjectListView3.SetObjects(LvLst)
End Subhttps://stackoverflow.com/questions/35090863
复制相似问题