2013-07-22 114 views
1

我在使用listview的项目中,此listview有2个组。我很想知道是否有可能为每个组创建行为。分配组中的项目并为每个组设置行为

我有一个名为“Online”的项目和另一个名为“Offline”的项目。这些项目前面有一个红色或黑色圆圈(图像)。这两个项目都位于名为“live”或“offline”的组中。

Sample screenshot

我想要做的两件事情:

  • 我应该能够改变一个项目小组,每当我想要的。

  • 当一个项目在一个组中时,行为应该改变。 (例如,如果“离线产品组中的‘实时’,图像将被改变为红点,而不是一个黑点)

    ImageList.Images.Add(My.Resources.bullet_black) 
    ImageList.Images.Add(My.Resources.bullet_red) 
    Liste.LargeImageList = ImageList 
    
    Dim groupeOffline As New ListViewGroup("Offline") 
    Dim groupeLive As New ListViewGroup("Live") 
    Liste.Groups.AddRange({groupeLive, groupeOffline}) 
    
    Liste.Items.Add("Offline", 0).Group = groupeOffline 
    Liste.Items.Add("Online", 1).Group = groupeLive 
    

以我的ImageView中,0的索引是黑点 和1个指数是红

回答

1

你的代码已经包含了大部分需要什么你可以依靠以增加新的项目,当你想修改的护理有关的功能,例如:。

Private Sub updateGroups(curItem As String, targetGroup As String) 

    Dim curIndex As Integer = 1 'Same index for both group and image 
    Dim curGroup = groupeLive 
    If (targetGroup.ToLower() = "offline") Then 
     curIndex = 0 
     curGroup = groupeOffline 
    End If 

    Liste.Items.Add(curItem, curIndex).Group = curGroup 

End Sub 

你可以这样调用: updateGroups("new live item", "Live")updateGroups("new offline item", "Offline")

记住,预计这两个群体进行全局声明(你可能更喜欢去改变它,使得它们作为参数传递)。

+0

嗨varocarbas,它工作得很好,但我做了一个更好的版本(我的项目:P) 如果你intrested: http://pastebin.com/awsEEpHt 感谢。 – Riptide

+0

@Riptide更好的版本,你的意思是采取我的,并添加一个尝试...赶上?大声笑。我想你会把这个看作是正确的答案。 – varocarbas

+0

我的意思是我用布尔设置组,我删除旧组中的旧项目,我添加了“如果curItem =”“然后退出小组”,因为我有一个问题:) 是啊,所以thx帮助我。 – Riptide

相关问题