Per Code erstellter Control Events zuweisen

  • VB.NET

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

    Per Code erstellter Control Events zuweisen

    Hallo Leute!
    Ich habe ein relativ flexibles Formular erstellt, dass anhand von Daten aus einer Datenbank seine Controls selbst generiert. Es ist immer eine unterschiedliche Anzahl an Formularsteuerelementen und es kann sich jeweils um einen Knopf, eine TextBox oder eine ComboBox handeln. Jetzt habe ich aber das Problem, dass ich nicht weiß, wie ich diesen per Code erstellten Controls jetzt Events zuweisen soll. WithEvent- Variablen gehen ja leider nicht als Array.

    HamburgerJungeJr schrieb:

    Mit AddHandler kannst du Subs an Events von Controls binden.

    Danke, das klappt! Hatte vorher zum Testen ein paar WithEvents- Variablen genommen, nur war das äußerst unschön und unflexibel vom Code her

    HamburgerJungeJr schrieb:

    Was willst du damit denn erreichen? Vielleicht gibt es sogar eine bessere Möglichkeit.

    Ich will im übrigen ein Formular, dass aus verschiedenen Angaben einen Befehl für ein Spiel (will ich hier nicht nennen, wegen Schleichwerbung und so) zusammenwurschtelt. Da jeder Befehl unterschiedliche, und vor allen Dingen unterschiedlich viele Parameter hat, werden für jeden Befehl die Parameter aus der Datenbank ausgelesen. Dort ist u.a. auch definiert, ob es z.B. ein Knopf oder ein Textfeld werden soll. Bei Knöpfen ist z.B. noch vermerkt, was beim Click passieren soll. Das holt sich mein Programm dann in den Tag der Controls und ließt es beim Anklicken aus.

    Leinand schrieb:

    Da jeder Befehl unterschiedliche, und vor allen Dingen unterschiedlich viele Parameter hat
    Was hat das mit den Events zu tun? Diese haben eine feste Signatur.
    Du brauchst keine dynamischen Event-Handler.
    Mach mal zunächst einen Plan,
    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!

    Leinand schrieb:

    Signatur

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    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!
    @Leinand

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint '...

    das in den Klammern dürfte die Signatur sein, Teil von dem Methodenkopf.

    @RodFromGermany : Oder doch nicht ? :D
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Ja, genau und um so eine Methode über Formularsteuerelemente aufzurufen, braucht es Handles. Und wenn ich die Formularsteuerelemente erst im Code erstelle, dann muss ich irgendwie Handles im Code hinzufügen. Oder steh' ich gerade aufem Schlauch?

    Leinand schrieb:

    Handles im Code hinzufügen.
    Warum dynamisch (wovon Du offensichtlich keine Ahnung hast)?
    Warum nicht im Designer?
    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!

    RodFromGermany schrieb:

    Warum nicht im Designer?
    Weil es vielleicht dynamisch sein muss? Hättest du meinen 2. Beitrag (der 3. dieses Threads) gelesen, wüsstest du auch warum.

    RodFromGermany schrieb:

    (wovon Du offensichtlich keine Ahnung hast)?

    Mein Code funktioniert. Das einzige, was mir gefehlt hat, war eine Funktion. Noch Fragen?

    Meine Frage wurde beantwortet und dafür bedanke ich mich recht herzlich bei @HamburgerJungeJr
    Eine weitere Erörterung dieses Themas erachte ich für sinnlos