Dynamisch erstellte Listbox ansprechen

  • VB.NET

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

    Dynamisch erstellte Listbox ansprechen

    Hi Leute,

    mein Problem lautet wie folgt: mein programm erstellt automatisch ein paar listboxen mit den namen listbox1, listbox2 und so weiter die automatisch durchnummeriert weden. Die Anzahl dieser Listbox ist abhängig von der Anzahl von Dateien in einem Ordner.
    So weit so gut.
    Weiters werden auch automatisch einige Buttons erstellt. Diese werden immer mit 3 buchtaben und danach einer Zahl benannt zB abc1, fhg3, txs2.
    Nun möchte ich wenn auf abc1 gedrückt wird in listbox1 das item "abc1" hinzufügen
    oder wenn auf txs2 gedrückt wird das item txs2 zur listbox2 hinzufügen

    hatt irgendjemand vorschläge oder Lösungen parat ? ?(

    Vielen Dank im Voraus
    Such mal nach dem Stichwort AddHandler
    Aber vorher braucht es noch folgende Info: Soll ein bestimmter Button einer bestimmten Listbox seinen Namen schicken oder willst Du das später erst festlegen? Aus Deiner Anfrage ließe sich schließen, dass der 1. Button seinen Namen nur an die 1. ListBox schicken soll und der 3. Button nur an die 2. ListBox.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Such mal nach dem Stichwort AddHandler
    Aber vorher braucht es noch folgende Info: Soll ein bestimmter Button einer bestimmten Listbox seinen Namen schicken oder willst Du das später erst festlegen? Aus Deiner Anfrage ließe sich schließen, dass der 1. Button seinen Namen nur an die 1. ListBox schicken soll und der 3. Button nur an die 2. ListBox.

    also der button der eine 1 beinhaltet soll an listbox1 senden der button der eine 2 im text hat an listbox2, der mit ner 3 im text an listbox3 und so weiter

    schönen abend :)
    Dann wäre mein Lösungsansatz: Alle ListBoxen in einer List(Of ListBox) speichern (oder später im u.a. Sub aus Me.Controls casten) und mittels AddHandler die Click_Events Deiner Buttons auf folgende Prozedur verweisen:

    VB.NET-Quellcode

    1. Private Sub ListBoxItemHinzufuegen(sender As Object, e As System.EventArgs)
    2. Dim tp_Name = CType(sender, Button).Name
    3. For Each lp_ListBox In cp_ListBoxen 'cp_ListBoxen ist eine List(Of ListBox), wie erwähnt
    4. If tp_Name.EndsWith(lp_ListBox.Name.Last) Then lp_ListBox.Items.Add(tp_Name)
    5. Next
    6. End Sub


    btw: Vollzitate werden nicht gern gesehen, v.a. wenn der direkt vorangegange Post zitiert wird.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @mox Jou.
    @Swo Wenn Du ein Problem auf eine große Anzahl per Code erstellter Controls reduzierst, denkst Du am eigentlichen Problem vorbei.
    Beschreibe also zunächst das ganze Problem, dann werden wir hier eine schnuckelige Lösung finden.
    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!
    Für dich könnten Benutzersteuerelemente interessant sein. Damit kann man Module bauen, die dann zur Laufzeit zum Programm hinzugefügt werden. Ein Modul könnte dann beispielsweise eine Listbox und 3 Buttons enthalten. Das Grundverhalten wird im Designer festgelegt. Wenn das Modul dann zur Laufzeit hinzugefügt wird legt man die Parameter fest, bei denen sich die Module unterscheiden. So spart man sich einiges an Arbeit und muss nicht jedes einzelne Element zur Laufzeit konfigurieren.
    Option strict = on

    If it's stupid and it works it ain't stupid.