Dynamische Elemente hinzufügen und anweisung geben.

  • VB.NET

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

    Dynamische Elemente hinzufügen und anweisung geben.

    Hallo, wie in der Überschrift geht es um Dynamische Elemente. In meinem Fall geht es um Buttons.
    Ich möchte durch das klicken eines Buttons während der laufzeit des Programms einen neuen Button erstellen der Code sieht dann so aus

    VB.NET-Quellcode

    1. Dim bt_1 As New Button
    2. bt_1.Top = 25
    3. bt_1.Left = 25
    4. bt_1.Height = 75
    5. bt_1.Width = 75
    6. bt_1.Text = "Text"
    7. bt_1.Name = "bt_1"
    8. Me.Controls.Add(bt_1)


    Durch das klicken auf Button1 erstellt das Programm einen neuen Button..1 mal. Und genau das ist mein Problem. Ich möchte, dass das Programm jedes mal wenn ich den Button1 drücke ein neuer Button erstellt wird. Mein Gedanke war auch schon das ich einen Zähler in den Button1 einfüge, der nach jedem klicken einen Integerwert +1 setzt und den Integerwert als Buttonname setze. Das nächste währe das ich jedem neuerzeugtem Button eine Methode zuweis die eine fast gleichen Codestruktur aufweist.

    Könnte mir jemand Tipps geben oder einen kleinen Codeausschnitt den ich mir dann so zurecht bastle, dass es passt ? :) Danke
    Mit dem AddHandler habe ich mich jetzt auch befasst und verstehe was du meinst. Das Programm soll aber sofort nach erstellen des neuen dynamischen button eine neue Sub erstellen indem ein neuer code steht...da scheitert es bei mir. Um auch nochmal auf das

    Zum Namen i.tostring hast du doch schon selbst den Code
    zurückzukommen... Wie meinst du das mit dem i.tostring ? ich komme da noch nicht ganz mit
    ein neuer Code? Wo soll der denn her kommen? Wer schreibt den Code? den gleichen Code wie btn 1? dann is das mit dem addhandler schon richtig.
    un zu dem erstellen... musst halt den Namen mit nem Zähler versehen.

    VB.NET-Quellcode

    1. Dim ButtonCounter As Integer = 1 'des hier als globale Variable

    VB.NET-Quellcode

    1. Sub btnclick(ByVal sender As System.Object, ByVal e As System.EventArgs)
    2. MessageBox.Show(sender.ToString)
    3. Dim btn As New Button
    4. With btn
    5. .Top = 25
    6. .Left = 25 + ButtonCounter * 75 'weil sonst liegen se ja alle übereinander
    7. .Height = 75
    8. .Width = 75
    9. .Text = "Knopp" & ButtonCounter.ToString
    10. .Name = "btn" & ButtonCounter.ToString
    11. AddHandler .Click, AddressOf btnclick
    12. End With
    13. ButtonCounter += 1
    14. Me.Controls.Add(btn)
    15. End Sub
    ich frage mich, warum willst du ein Proggi, wo man per Button-Klick weitere Buttons erstellt?

    Und wie wird das aussehen, wenn der User da 50 mal drauf klickst?

    Gibts auchn Button, mit dem man die Buttons wieder löschen kann?

    Und wirst du das auch iwann abspeichern wollen, wieviele Buttons grad da sind?
    Moin @ErfinderDesRades:
    Ich denke, er will nur mal rumspielen und sehen, wie es funktioniert.
    Einen (tieferen) Sinn sehe ich da auch nicht drin. :D
    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!
    mag sein, im Grunde will ich ja malwieder drauf hinaus, dasses ein Holzweg ist, Controls dynamisch zu erstellen.

    Nach meiner Erfahrung liegt immer eine denkerische Vermischung von Gui und Daten vor, wenn man damit anfängt, d.h. man hat keine Trennung von zwischen Gui und Daten, und fängt logisch an, Datenhaltung mittels vieler Controls zu programmieren, statt ein Multi-DatenControl zu verwenden, was schnell zu ziemlichen Grotesken führt.

    Und wies bei Holzwegen so ist, entwickelt man die immer weiter, statt einfach mal einen tragfähigen ganz anneren Ansatz zu erlernen.