2016-07-20 9 views
1

コードで作成されたボタンの配列があります。私がこれをした理由は、ボタンの量が変わる可能性があるからです。この場合、カレンダーで月に表示されるボタンを作成しようとしています。ボタンの量が2月に作成された場合、その量は28か29のいずれかになります。配列で動的に作成されたボタンのクリックイベントを処理する

私はこれをやりましたが、問題はそれぞれのクリックイベントを処理する必要がありますボタン。私は以下の例でクリックイベントを処理する方法を一般的な考え方で探しているので、ボタンの内容がメッセージボックスに表示されます。

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 

これらのボタンを個別に参照する方法は、btns(ButtonCount)を使用する方法ですが、名前は付けません。

例で作成されたボタンにクリックイベントを追加する方法はありますか?

+3

は 'AddHandler'と' RemoveHandler'文を見てください。それらを動的に使用することができます。 https://msdn.microsoft.com/en-us/library/7taxzxka.aspx – Dabblernl

+1

ループの中で 'btns.Length - 1'を呼び出さなければ、例外が発生します。 –

答えて

0

AddHandlerステートメントを使用して、ボタンにイベントハンドラを割り当てます。イベントハンドラで、どのボタンが押されたかを確認します。

+1

この答えをさらに増やすためのコード例を追加することをお勧めします。 –

0

まず、コメントに示唆されているドキュメントを見てください。 (AddHandler Doc.)

第二には、あなたが何をしたいかを達成するために、この例に従うことができる:

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 
関連する問題