首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ObjectListView BarRenderer in VB.net

ObjectListView BarRenderer in VB.net
EN

Stack Overflow用户
提问于 2016-01-29 17:49:23
回答 1查看 899关注 0票数 0

我离理解ObjectListView越来越近了。最大的学习曲线是尝试将所有示例从C#转换为VB.net。

我有一个工作的ObjectListView,我创建它是为了学习的目的。

我正在尝试创建一个基于高度列的BarRenderer。最后我创建了一个从FormatRow中触发的子程序。然而,当条形图显示时,它们并不像预期的那样。我让乔75岁,玛丽25岁。我预计酒吧将分别满员75%和25%。

也许有一种方法可以做到这一点,就像我对图像机所做的那样,但我不确定是如何做到的。我把代码放在那里作为一个额外的例子。

代码语言:javascript
运行
复制
    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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-29 19:13:30

明白了!

实际上,当BarRenderer自动读取该值时,我试图将该值提供给它。你只需为条子提供最小和最大的值,它就会创建它。

Col_Height.Renderer =新BarRenderer(0,100,Pens.Black,Brushes.Gold)

实际上,您甚至不需要FormatRow事件:

代码语言:javascript
运行
复制
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 Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35090863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档