Einzelnes ListView-Item löschen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Manschula.

    Einzelnes ListView-Item löschen

    Hallo zusammen!

    Ich verzweifele gerade:

    Ich möchte, wenn das ListView Item z.B. den Namen "Test" hat, dass es gelöscht wird. Wäre nett, wenn mir jemand helfen könnte. :)



    Mit freundlichen Grüßen.
    Haha, und trotzdem hast du noch einige (Syntax-) Fehler drin :P Außerdem kann dein Code zur Laufzeit eine Exception auswerfen... Hier eine Möglichkeit, wenn gleich sie nicht sonderlich schön ist:

    VB.NET-Quellcode

    1. For i As Integer = 0 To ListView1.Items.Count - 1
    2. If ListView1.Items.Item(i).Text = "Manuel" Then
    3. ListView1.Items.Remove(ListView1.Items.Item(i))
    4. Exit For
    5. End If
    6. Next

    Gruß, Manschula

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Manschula“ ()

    Hey,
    bei mir funktioniert folgender Code problemlos:

    VB.NET-Quellcode

    1. For Each LVI As ListViewItem In ListView1.Items
    2. If LVI.Text = "Blah" Then ListView1.Items.Remove(LVI)
    3. Next

    MfG,
    -haiyyu
    Hey,

    noch schöner, besser und kürzer:

    VB.NET-Quellcode

    1. Dim item As ListViewItem
    2. For Each item In ListView1.Items
    3. If item.Text = "Manuel" Then
    4. ListView1.Items.Remove(item)
    5. End If
    6. Next

    Gruß, Manschula

    //Edit: haiyyu: Zwei Idioten, ein Gedanke... ;)

    Manschula schrieb:

    Ich glaube du irrst dich :D Mit meinem Code wird das gesuchte Item gelöscht...und mit haiyyu's Code auch.




    Hier der gesamte Code, vielleicht sieht man ja meinen Fehler. :S

    Quellcode

    1. Dim NeuesItem As New ListViewItemNeuesItem.Text = "James"
    2. NeuesItem.ForeColor = Color.Red
    3. ListView2.Items.Add(NeuesItem)For i As Integer = 0 To users.Count - 1
    4. ListView1.Items.Add(users(i).Name)For Each LVI As ListViewItem In ListView1.Items
    5. If LVI.Text = "James" Then ListView1.Items.Remove(LVI)Next
    6. ListView2.Items.Add(users(i).Name)
    7. Next






    [Sorry, dass ich euch auf den Wecker geh! ;)]

    Manschula schrieb:

    Hey,

    was soll der Code denn bewirken? Wäre gut, wenn du ihn kurz erläutern könntest, auch was z.B. "users" ist. Sonst werde ich nicht aus dem Code schlau...

    Gruß, Manschula




    OK. Mein Ziel ist es aus dem ListView1 den ersten Beitrag z.b. "James" rot zu färben. So adde ich "James" (der Name, der später im 2. ListView rot sein soll) in das 2. ListView.

    Das hab ich schon mit dem code geschafft:

    Dim NeuesItem As New ListViewItemNeuesItem.Text = "James"
    NeuesItem.ForeColor = Color.Red
    ListView2.Items.Add(NeuesItem)

    So, aber nun muss ich mir ja gedanken machen, wie ich die anderen Namen (unter James) in das 2. ListView adden kann. (Dafür brauchte ich euere hilfe)

    ListView1.Items.Add(users(i).Name) // Fügt die User ins 1. ListView ein

    For Each LVI As ListViewItem In ListView1.Items ' der code der mir hier gesagt wurde
    If LVI.Text = "James" Then ListView1.Items.Remove(LVI)Next
    ListView2.Items.Add(users(i).Name) ' fügt die anderen Namen unter "James" ein.



    Hoffe, dass ich es jetzt halbwegs nachvollziehbar beschrieben habe..
    Hey,

    ich bin ganz ehrlich, so ganz habe ich es noch nicht verstanden :S Ich versuch es mal:
    1. In Listview1 wird der erste Eintrag rot eingefärbt und in Listview2 eingetragen ("James"); auch in Listview2 soll er rot sein
    2. Die anderen Einträge aus Listview1 sollen in Listview2 eingetragen werden, aus Listview1 aber gelöscht werden
    So? :D

    Gruß, Manschula

    Manschula schrieb:

    Hey,

    ich bin ganz ehrlich, so ganz habe ich es noch nicht verstanden :S Ich versuch es mal:

    1. In Listview1 wird der erste Eintrag rot eingefärbt und in Listview2 eingetragen ("James"); auch in Listview2 soll er rot sein
    2. Die anderen Einträge aus Listview1 sollen in Listview2 eingetragen werden, aus Listview1 aber gelöscht werden
    So? :D

    Gruß, Manschula

    Zu Punkt 1:

    In Listview1 wird der erste Eintrag rot eingefärbt und in Listview2 eingetragen ("James"); auch in Listview2 soll er rot sein [Der eintrag muss in ListView1 nicht rot sein, nur im 2 ListView ist das nötig, sonst richtig. :P

    Punkt 2:

    Die anderen Einträge aus Listview1 (unter "James") sollen in Listview2 (unter "James")eingetragen werden
    Hey,

    also dann hoffe ich mal, dass ich alles richtig verstanden habe; hier eine schnelle (und unsaubere!) Lösung:

    VB.NET-Quellcode

    1. Dim lv_item As ListViewItem
    2. For Each lv_item In ListView1.Items
    3. ' Schritt 1: "James" in Listview1 finden,
    4. ' in Listview2 eintragen unr rot einfärben
    5. If lv_item.Text = "James" Then
    6. lv_item.ForeColor = Color.Red
    7. ListView2.Items.Add("James")
    8. ListView1.Items.Remove(lv_item)
    9. ListView2.Items.Item(0).ForeColor = Color.Red
    10. ' Schritt 2: Alle anderen Items in Listview2 eintragen
    11. For i As Integer = 0 To ListView1.Items.Count - 1
    12. ListView2.Items.Add(ListView1.Items.Item(i).Text)
    13. Next
    14. End If
    15. Next

    Mein Code geht davon aus, dass in Listview1 schon Einträge vorhanden sind.

    Gruß, Manschula