我越來越接近理解ObjectListView。大的學習曲線正試圖將所有的C#示例轉換爲VB.net。VB.net中的ObjectListView BarRenderer
我有一個工作的ObjectListView,我爲學習目的而創建。
我正在嘗試創建基於高度列的BarRenderer。我最終創建了一個從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