2016-07-20 3 views
1

У меня есть набор кнопок, созданных с помощью кода. Причина, по которой я это сделал, состоит в том, что количество кнопок может меняться, и в этом случае я пытаюсь создать кнопки, которые отображаются в виде дней в месяце в календаре, и сумма не может быть на если количество кнопок было создано за февраль, сумма будет равна 28 или 29.Обработка событий кликов для динамически создаваемых кнопок в массиве

Я сделал это, как хочу, однако проблема связана с необходимостью обрабатывать событие click для каждого кнопка. Поскольку я ищу общую идею о том, как обрабатывать событие click в приведенном ниже примере, я хочу, чтобы я написал сообщение о том, что содержимое для кнопки.

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), я их не называю.

Итак, есть ли способ добавить событие click для этих кнопок, созданных в примере?

+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