Mehrere ListView indizieren

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von mepema.

    Mehrere ListView indizieren

    moin moin,

    ich habe auf einer Form mehrere ListView plaziert (ListView1, ListView2 ...). Nun kenne ich das von VB6, dass man die ListView indizieren konnte (ListView1(index)). Bei VB.NET habe ich soetwas nicht gefunden. Ich müßte also für jedes ListView eine eigene Bearbeitungsroutine erstellen, anstatt bei VB6 z.B.

    VB.NET-Quellcode

    1. Dim i as integer
    2. For i = 0 to 5
    3. ListView1(i).Text = i
    4. Next i

    müßte es nach meinem Verständnis bei VB.NET heißen

    VB.NET-Quellcode

    1. ListView1.Items.Text=1
    2. ListView2.Items.Text=2
    3. ...

    weil Schleife geht meines Wissens nicht.

    Gibt es vielleicht doch eine Methode, diese ListView's zu indizieren ?(

    Danke für eine Antwort :)
    Ich habe hier dieses Beispiel gesehen:

    VB.NET-Quellcode

    1. Dim lab As Label = DirectCast(Me.Controls("Label" & i), Label)

    Das ließe sich für mich verwenden, wenn Label gegen ListView ausgetauscht wird

    VB.NET-Quellcode

    1. Dim lvwListe As ListView = DirectCast(Me.Controls("ListView" & i), ListView)

    Aber irgendwie funktioniert die Konvertierung nicht. lvwListe ist immer "Nothing", bei dem Beispiel "Label" geht das ;(
    Meine ListView's heißen alle gleich, bis auf die Nummer am Namensende.
    [Problen gelöst]
    Die ListView's sitzen alle in einem Panel, also

    VB.NET-Quellcode

    1. Dim lvwListe As ListView = DirectCast(Panel1.Controls("ListView" & i), ListView)


    Danke dennoch für die anderen Lösungsansätze ;)

    PS: Ja, hatte parallel geschrieben :P

    Doch noch eine Frage

    Kann man

    VB.NET-Quellcode

    1. Dim lvwListe As ListView

    eigentlich für eine Form global deklarieren und dann innerhalb der Prozedur die Vererbung durchführen?
    Problem: Diese Anweisung ist innerhalb der Print_Page-Prozedur. Wenn nun die nächste Seite gedruckt wird, sind die Informationen von lvwListe weg, vermutlich, weil die Vererbung innerhalb von Print_Page stattfindet.
    Vererbung ?
    Was meinst du damit ?

    Du kannst dein ListView Objekt natürlich Global deklarieren.
    Die Frage ist, wieso testest du es nicht einfach ?

    Näheres kann ich dir nur sagen wenn du den entsprechenden Code mit dem Fehler postest.

    Gruß Mono
    Das ist meine Signatur und sie wird wunderbar sein!
    Mit "Vererbung" hatte ich gemeint, dass alle Eigenschaften und Daten eines Objektes (z.B. ListView) auf ein anderes (virtuelles) Objekt wie lvwListe übertragen werden.

    Der Hintergrund ist, dass ich mehrere ListView's innerhalb eines Panels auf der Form 'Projektplaner' habe und eine übersichtliche Druckerroutine schreiben wollte.

    VB.NET-Quellcode

    1. Public Class Projektplaner
    2. '--> Meine Idee: Private lvwListe as ListView
    3. .....
    4. '// Später im Code kommt
    5. Private Sub pd_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
    6. Dim lvwListe As ListView = DirectCast(Panel_Window.Controls("ListView" & ListenNummer), ListView)
    7. ..... 'Die Print-Anweisungen
    8. If yPos + 20 >= PageHeigth Then
    9. yPos = 50
    10. PageNumber += 1
    11. e.HasMorePages = True
    12. Exit While
    13. Else
    14. e.HasMorePages = False
    15. End If
    16. End Sub
    17. End Class

    Wenn die nächste Seite gedruckt wird (e.HasMorePages = True) 'vergißt' die Prozedur pd_PrintPages die per Dim lvwListe... Übergebenen Daten. Deshalb wollte ich das 'lvwListe' gleich am Anfang deklarieren und innerhalb der pd_PrintPages nur noch die Daten zuweisen.
    Alle meine Versuche haben aber nicht funktioniert, weil die einzige Idee mit Dim wäre ReDim, aber das geht halt nicht.

    --> Nachtrag: Warum Umständlich wenn's auch einfach geht:

    VB.NET-Quellcode

    1. Public Class Projektplaner
    2. Private lvwListe as ListView ' <-- Deklaration auf Class-Ebene
    3. .....
    4. '// Später im Code kommt
    5. Private Sub pd_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
    6. lvwListe = DirectCast(Panel_Window.Controls("ListView" & ListenNummer), ListView) ' <-- Übergabe der Daten und Eigenschaften
    7. End Sub
    8. End Class

    :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mepema“ ()