2016-11-27 53 views
0

我有listview1与2列。我已经有添加项目的代码,但是我的问题是当我在listview1中再次添加同一项目时,它显示重复内容,并且当我继续添加相同的项目时,listview中的项目正在增加相同的数据。将项目添加到listview1中,并删除项目是否已经在listview1或替换

我需要什么例子:

listview1早已在1列= 1和第2列= A数据,我想用这样的1列= 1和第2数据再次添加列= B.我有2个解决方案,我尝试编码但没有运气。我的2个解决方案是这些:

  1. 我只是想更新只在第2列中的数据,从“A”到“B”但具有相同的第一列的数据,并没有额外的项目将被添加到像什么的ListView只是更新/替换它。

OR

  • 删除会导致重复和添加相同的项,以便不会有重复的项。
  • 这里是我的添加项目代码:

    Private Sub rbChoiceA_Checked(ByVal sender As Object, ByVal e As EventArgs) 
    
        Dim rbA As RadioButton = TryCast(sender, RadioButton) 
        Dim str As String = rbA.Parent.Name 
        str = str.Remove(0, 6) 
        lab1.Text = str 
        Dim item As ListViewItem 
        Dim row As String() = New String(2) {} 
        row(0) = str 
        row(1) = rbA.Text 
        item = New ListViewItem(row) 
        ListView1.Items.Add(item) 
    
    End Sub 
    

    我只是需要帮助添加代码我的问题。您的答复非常感谢。提前致谢!

    +0

    如果您需要获取“解决方案”的帮助,请发表*该*代码。我们不能帮助解决我们无法看到的问题 – Plutonix

    +0

    在任何情况下,如果第一列中具有特定值的项目存在或不存在,您需要'搜索'ListViewItem的当前集合为_Find_。一旦你发现如果这是真的,那么你可以简单地替换第二列中的值。无需使用第二个解决方案。 – Steve

    +0

    我发布了代码。 是的,也许第一个解决方案是足够的,但我不能用它写代码。 – James

    回答

    0

    找到该项目前加入

    If (ListView1.FindItemWithText(row(0)) Is Nothing) Then 
        ListView1.Items.Add(item) 
    End If 
    
    +0

    它的工作原理。谢谢,但是当我检查另一个单选按钮时,它不会更新行(1)。再次感谢您,我会尝试在您的建议代码中添加一些代码。 – James

    +0

    @James如果你遇到其他问题,只需更新这篇文章,并让我知道下面这篇文章的评论。现在,如果我的回答对你有帮助,请点击我答案左侧的“向下投票”下方的“绿色检查”:) – Tyler

    0

    我想通了,因为别人的帮助also.I创建了一个功能Dictionary.This代码更新子项不添加或删除项目。

    Dim thisDict As New Dictionary(Of String, String) 
    
    Public Sub listviewupdate(ByVal D As Dictionary(Of String, String)) 
        ListView1.Items.Clear() 
        For Each KVP As KeyValuePair(Of String, String) In D 
         Dim LVI As New ListViewItem(KVP.Key) 
         LVI.SubItems.Add(KVP.Value) 
         ListView1.Items.Add(LVI) 
        Next 
    End Sub 
    
    Private Sub rbChoiceA_Checked(ByVal sender As Object, ByVal e As EventArgs) 
        Dim rbA As RadioButton = TryCast(sender, RadioButton) 
        Dim str As String = rbA.Parent.Name.Remove(0, 6) 
        lblItemNo.Text = str 
        If thisDict.ContainsKey(str) Then thisDict.Remove(str) 
        thisDict.Add(str, rbA.Text) 
        listviewupdate(thisDict) 
    End Sub