Listview Doppelten eintrag

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von xtts02.

    Listview Doppelten eintrag

    Hi, möchte aus meiner Listview Doppelte verhindern.

    VB.NET-Quellcode

    1. If Not ListView1.Contains(ListView1.Text) Then
    2. ListView1.Items.Add(TextBox1.Text)
    3. End If

    Das Funktioniert leider nicht so wie ich möchte. Wenn ich ein Namen in meiner Textbox schreibe, soll der nicht nochmal in Listview rein.
    Wie stell ich das am besten an?
    Nein, so geht es nicht. Die Contains-Methode von Listview sucht nur nach Controls in der Listview.
    Wenn Du nach ein ListViewItem suchst, dann musst Du die Methode FindItemWithText verwenden. Beispiel:

    VB.NET-Quellcode

    1. Dim foundItem As ListViewItem = ListView1.FindItemWithText("Suchbegriff")
    2. If foundItem Is Nothing Then
    3. Debug.WriteLine("Nichts gefunden!")
    4. Else
    5. Debug.WriteLine("Zeile Nr. " & ListView1.Items.IndexOf(foundItem))
    6. End If

    xtts02 schrieb:

    Nein, so geht es nicht. Die Contains-Methode von Listview sucht nur nach Controls in der Listview.
    Wenn Du nach ein ListViewItem suchst, dann musst Du die Methode FindItemWithText verwenden. Beispiel:

    VB.NET-Quellcode

    1. Dim foundItem As ListViewItem = ListView1.FindItemWithText("Suchbegriff")
    2. If foundItem Is Nothing Then
    3. Debug.WriteLine("Nichts gefunden!")
    4. Else
    5. Debug.WriteLine("Zeile Nr. " & ListView1.Items.IndexOf(foundItem))
    6. End If

    Leider hat das auch nicht geholfen, er Postet das selbe nochmal rein.

    xtts02 schrieb:

    Wie hast Du das Beispiel in deinen Code eingebaut?
    Poste dochmal den betroffenen Abschnitt von deinem Code.



    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If TextBox1.Text = ("") Then
    3. MsgBox("Es wurde kein Text eingegeben!")
    4. Exit Sub
    5. End If
    6. Dim foundItem As ListViewItem = ListView1.FindItemWithText(TextBox1.Text)
    7. If foundItem Is Nothing Then
    8. Debug.WriteLine("Nichts gefunden!")
    9. Else
    10. Debug.WriteLine("Zeile Nr. " & ListView1.Items.IndexOf(foundItem))
    11. End If
    12. With ListView1.Items
    13. Dim Item As ListViewItem
    14. Item = .Add(TextBox1.Text)
    15. Item.SubItems.Add(My.Computer.Clock.LocalTime.ToString)
    16. Item.SubItems.Add("test")
    17. Item.SubItems.Add("1")
    18. TextBox1.Clear()
    19. End With
    20. End Sub


    Bekomme keinen Fehler.

    VB.NET-Quellcode

    1. If TextBox1.Text.Trim = "" Then
    2. MessageBox.Show("Es wurde kein Text eingegeben!")
    3. Exit Sub
    4. End If
    5. With ListView1
    6. If .FindItemWithText(TextBox1.Text) IsNot Nothing Then
    7. ' IsNot Nothing -> Es wurde irgendwas gefunden
    8. MessageBox.Show(TextBox1.Text & " ist bereits vorhanden.")
    9. Return
    10. Else
    11. ' Is Nothing -> nichts gefunden, also nicht vorhanden
    12. Dim item As New ListViewItem(New String() {TextBox1.Text, Now.ToString, "dummy1", "dummy2"})
    13. .Items.Add(item)
    14. TextBox1.Clear()
    15. End If
    16. End With