2016-07-20 13 views
1

Ich habe eine Reihe von Schaltflächen, die durch Code erstellt werden. Der Grund dafür ist, dass sich die Anzahl der Schaltflächen ändern kann. In diesem Fall versuche ich, Schaltflächen zu erstellen, die als Tage eines Monats in einem Kalender angezeigt werden, und der Betrag kann nicht in a sein Setzen Sie Betrag, denn wenn die Menge der Schaltflächen für Februar erstellt wurden, wäre der Betrag entweder 28 oder 29.Umgang mit Klickereignissen für dynamisch erstellte Schaltflächen im Array

Ich habe dies getan, wie ich will, aber das Problem kommt mit einem Klick-Ereignis für jeden zu behandeln Taste. Da ich im folgenden Beispiel nach der allgemeinen Idee suche, wie mit einem Klick-Ereignis umgegangen werden soll, möchte ich eine Messagebox erstellen, was der Inhalt für die Schaltfläche ist.

Dim btns(Date.DaysInMonth(CurrentYear, CurrentMonth) - 1) As Button 

For ButtonCount As Integer To btns.Length 
     btns(ButtonCount) = New Button With {.Content = ButtonCount} 

     'Handler goes here. 
Next 

Die Art und Weise, dass ich diese Tasten einzeln Referenz durch btns (Button) ist, ich nenne sie nicht.

Gibt es eine Möglichkeit, ein Klickereignis zu diesen Schaltflächen hinzuzufügen, die im Beispiel erstellt wurden?

+3

Werfen Sie einen Blick auf die 'AddHandler' und' RemoveHandler' Aussagen. Sie können sie dynamisch verwenden. https://msdn.microsoft.com/en-us/library/7taxzxka.aspx – Dabblernl

+1

Sie müssen 'btns.Length - 1' in Ihrem Loop pr aufrufen, sonst erhalten Sie eine Ausnahme. –

Antwort

0

Verwenden Sie die AddHandler-Anweisung, um Ihrer Schaltfläche einen Ereignishandler zuzuweisen. Überprüfen Sie in Ihrem Event-Handler, welche Taste gedrückt wurde.

+1

Sie sollten wahrscheinlich ein Codebeispiel hinzufügen, um diese Antwort noch besser zu machen _ "eine Antwort" _. –

0

Schauen Sie sich zuerst die Dokumentation an, wie in den Kommentaren vorgeschlagen. (AddHandler Doc.)

Zweitens könnte man diesem Beispiel folgen zu erreichen, was Sie tun möchten:

Dim btns(Date.DaysInMonth(CurrentYear, CurrentMonth) - 1) As Button 

For ButtonCount As Integer To btns.Length - 1 
     btns(ButtonCount) = New Button With {.Content = ButtonCount} 

     AddHandler btns(ButtonCount).Click, AddressOf OnBtnClick 
Next 

Private Sub OnBtnClick(sender As Object, e As RoutedEventArgs) 
     'Your Event Handling 
End Sub 
Verwandte Themen