Van listvie naar een andere listview plaatsen.

Status
Niet open voor verdere reacties.

bonnowagt

Gebruiker
Lid geworden
7 dec 2006
Berichten
445
Ik heb in mijn programma een zoekfunctie in een listview als volgt.
Code:
   ListView1.HideSelection = False
        Dim str As String = Trim(TextBox1.Text.ToLower)
        For i As Integer = 0 To ListView1.Items.Count - 1
            If ListView1.Items(i).SubItems(0).Text.ToLower.Contains(str) _
            Or ListView1.Items(i).SubItems(1).Text.ToLower.Contains(str) Then
                ListView1.Items(i).Selected = True
                ListView1.Items(i).EnsureVisible()
       ?????????????????         ListView2.Items.Add(ListView1.Items(i))
            End If
        Next

Vervolgens druk ik op de knop Zoek. In listview1 worden dan alle records met de selectiebalk gekleurd. Soms zijn deze records kriskras door de listview natuurlijk. Nu wil ik graag alle geslecteerde records bijelkaar.
Ik heb de regel code met de vraagtekens ervoor toegevoegd. dus deze code
Code:
ListView2.Items.Add(ListView1.Items(i))

Ik krijg nu de melding:

Kan het item BONNO WAGT niet toevoegen op meer dan een plaats. U moet het item eerst van de huidige locatie verwijderen of het item kopiëren.

Hoe kopieer ik dit item??
 
Werkt dit?

Code:
ListView2.Items.Add(ListView1.Items(i).text)


PS: Vergeet niet om de listview ook weer te legen.. Anders krijg je bij de 2e zoekactie ook nog de resultaten van de 1e zoekactie te zien...
 
Laatst bewerkt:
Dank je voor de oplossing. Ik krijg echter wel nu de listview te zien met de naam, echter alleen van de eerste kolom. Ik wil echter beide kolommen graag zien.
 
Code:
ListView2.Items.Add(ListView1.Items.Item(i).Text)
ListView2.Items.Item(i).SubItems.Add(ListView1.Items.Item(i).SubItems.Item(1).Text)
ListView2.Items.Item(i).SubItems.Add(ListView1.Items.Item(i).SubItems.Item(2).Text)

Dit werkt wel met 1 item, maar ik heb niet geprobeerd of het ook met 2 items werkt.

Uitleg:

Eerste regel: In lisview2 voeg je het item uit listview1 met index i toe.
2e en 3e regel: In listbox2 bij item i voeg je de subitems uit listview1 toe.

Let op! Bij mij was subitems.item(0) gewoon het item zelf!



Succes:thumb:
 
Hallo,

Ik heb het zo gedaan, maar als ik nu bijvoorbeeld op E zoek komen er van de 42 slechts 24 in listview2 te staan. Bij bij voorbeeld EE komen er ipv 18 maar drie items in listvioew2 te staan. Ook het laatste item verschijnt alleen in de eerste kolom. Hierbij mijn code:

Code:
 Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
        Button10.Visible = False : Button11.Visible = True
        ListView2.Visible = True
        ListView2.Width = 643
        ListView2.Height = 399
        Dim str As String = Trim(TextBox6.Text.ToLower)
            If TextBox6.Text = "" Then MsgBox("U heeft niets geselecteerd") : Exit Sub
            For i As Integer = 0 To ListView1.Items.Count - 1
                If ListView1.Items(i).SubItems(0).Text.ToLower.Contains(str) _
                Or ListView1.Items(i).SubItems(1).Text.ToLower.Contains(str) Then
                   
                    ListView2.Items.Add(ListView1.Items.Item(i).Text)
                    ListView2.Items.Item(i).SubItems.Add(ListView1.Items.Item     (i).SubItems.Item(1).Text)
                    ListView2.Items.Item(i).SubItems.Add(ListView1.Items.Item(i).SubItems.Item(2).Text)
                End If
            Next
     End Sub
 
In plaats van dit:
Code:
ListView2.Items.Item(i).SubItems.Add(ListView1.Items.Item(i).SubItems.Item(1).Text)
ListView2.Items.Item(i).SubItems.Add(ListView1.Items.Item(i).SubItems.Item(2).Text)

Kan je ook dit proberen:

Code:
ListView2.Items.Item(ListView2.Items.Count - 1).SubItems.Add(ListView1.Items.Item(i).SubItems.Item(1).Text)
ListView2.Items.Item(ListView2.Items.Count - 1).SubItems.Add(ListView1.Items.Item(i).SubItems.Item(2).Text)
 
Laatst bewerkt:
Dat was inderdaad de oplossing werkt prima op deze manier. Bedankt voor je moeite
 
Geen probleem!:)

Vergeet je niet om op "vraag opgelost" te klikken?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan