Variable als Name für Listbox?

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von CHULIO.

    Variable als Name für Listbox?

    Hallo,
    ist es möglich eine variable als namen für z.b. eine listbox zu benutzen?
    also dass man in einer schleife mehrere objecte nacheinander abarbeiten kann indem man diese zumbeispiel Listbox1 Listbox2 usw nennt und die zahl am ende des namens im code als variable ersetzt?
    Ich hoffe ich habs nachvollziehbar ausgedrückt ^^
    eine Form mit 3 Textboxen und einem Button:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim c1 As Control = Me.Controls.Item("TextBox1")
    3. Dim c2 As Control = Me.Controls.Item("TextBox2")
    4. Dim c3 As Control = Me.Controls.Item("TextBox3")
    5. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    eine variable kann man nicht direkt nutzen als name...
    man kann nur zB

    VB.NET-Quellcode

    1. 'Neues Listview erstellen
    2. Dim Lv as Listview = New listview
    3. 'Eigenschaften zuweisen
    4. Lv.items.add("Item1")
    5. 'Zu den Controls hinzufügen
    6. me.controls.add(Lv)

    Wenn du jetzt zB ein bestimmtes Ereignis abfragen müsstest zB SelectedIndexChanged bräuchtest du erstmal so eine Art von Event:

    VB.NET-Quellcode

    1. Private Sub IndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    2. 'Hier kommt dann, was du machen willst
    3. End Sub


    Dann müsstest du beim erzeugen noch einen AddHandler hinzufügen also so:

    VB.NET-Quellcode

    1. 'Neues Listview erstellen
    2. Dim Lv as Listview = New listview
    3. 'Eigenschaften zuweisen
    4. Lv.items.add("Item1")
    5. 'Handle hinzufügen
    6. AddHandler Lv.SelectedIndexChanged, AddressOf IndexChanged
    7. 'Zu den Controls hinzufügen
    8. me.controls.add(Lv)


    Das ist die mir einzig bekannte Möglichkeit.
    wenn du jetzt zB Items zu einem Listview hinzufügen müsstest, würde ich es so machen, das du bei dem erstellen des Listviews den Listview einen bestimmten Tag zuweist, und ihn dann später abfragst zB so

    VB.NET-Quellcode

    1. For Each i in Me.Controls
    2. If i.tag = [Dein Tag] and TypeOf i is Listview then
    3. 'Deine Befehle
    4. end If
    5. Next

    Tag fügst du so hinzu:

    VB.NET-Quellcode

    1. 'Neues Listview erstellen
    2. Dim Lv as Listview = New listview
    3. 'Eigenschaften zuweisen
    4. Lv.items.add("Item1")
    5. Lv.Tag = DeinTag
    6. 'Zu den Controls hinzufügen
    7. me.controls.add(Lv)

    Der Tag könnte dabei zB ein immer um 1 erhöhter Zähler sein. So kannst du den Tag mit og. Code immer abfragen und hast einen quasi-Variablennamen

    Ich hoffe ich hab dir weitergeholfen xD
    --- Zurzeit inaktiv ---

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

    @ Einsteiger: Aber die c1 kann dann nicht im ganzen code abgefragt werden, weil sie nicht global deklariert ist
    deswegen würde ich meine Lösung verwenden.
    --- Zurzeit inaktiv ---