2016-03-21 9 views
0

So kommen wir oft auf diese Frage, und ich sah keine generische Antwort darauf.Wie behandelt man Ereignisse mit dynamisch erstellten Steuerelementen?

Die Hauptfrage ist: Ich programmiere programmgesteuert ein Steuerelement (wie eine Schaltfläche), und ich möchte das Klickereignis behandeln, wie kann ich das tun?

+1

Beantwortet [hier] (http://stackoverflow.com/q/11312239), [hier] (http://stackoverflow.com/q/16245189) und [hier] (http://stackoverflow.com/ q/7375061) unter vielen anderen – Plutonix

Antwort

0

Das Folgende ist für eine Schaltfläche, die auf einem FlowLayOutPanel platziert wird. Wenn Sie also viele Schaltflächen hinzufügen, unterstützt das Flussdiagramm diese Funktion.

Dim b As New Button With 
    { 
     .Name = "Button1", 
     .Text = "Press me", 
     .Size = New Size(100, 100), 
     .Location = New Point(25, 30), 
     .Parent = FlowLayoutPanel1, 
     .Visible = True 
    } 

AddHandler b.Click, Sub(s As Object, e As EventArgs) 
         Dim bnt = CType(s, Button) 
         If bmt.Name = "Button1" Then 
          MessageBox.Show(bnt.Text) 
         End If 
        End Sub 

FlowLayoutPanel1.Controls.Add(b) 

Was ich getan habe (und bereit zu teilen) ist eine Klasse erstellen, die auf einmal eine zu viele Schaltflächen erstellen können, aber der Schlüssel integriert, welche Taste aus einem Klick Ereignis geklickt wurde, die nach unten kommt, den Namen zu inspizieren oder vielleicht einen Wert in einem Tag der dynamisch erzeugten Schaltfläche oder eines ähnlichen Steuerelements.

Beachten Sie, dass es einen Nachteil gibt, wie das Ereignis hinzugefügt wurde, wenn Sie sich von dem Ereignis abmelden müssen, wie es gezeigt wurde, ist es mehr wert, als Martin gezeigt hat, wäre in diesem Fall besser, wenn Sie ein Abonnement benötigen Abmelden von der Veranstaltung.

Verwandte Themen