2015-11-16 5 views
-1

Событие клика для динамически создаваемых меток VB.NET

Для колледжа я создаю симулятор гравитационного поля, где показаны две массы вместе с величиной и направлением силы тяжести, которую они испытают. Для тел масс я использую динамически созданные овальные формы, и у этих овальных изображений есть метка на ней, показывающая массу. Эти овальные символы и метки хранятся в списке.

Мне нужно будет протащить эти тела. Для ovalshapes я использую If OvalShape.ContainsFocus, но из-за того, что этикетки будут в ontop этих ovalshapes, мне нужен какой-то способ проверить, не указана ли мышь на ярлыках. Я пробовал использовать обработчик событий, но я получаю сообщение об ошибке «click is not event of system.collections.listarray» для этого кода AddHandler labelArray.Click, AddressOf Me.labelArray_Click

Так что мои вопросы таковы: Есть ли способ проверить, имеет ли метка, принадлежащая listarray, и щелкнул ярлык внутри массива. Заранее спасибо

+0

вам нужно подключить обработчик к одному элементов управления * внутри * массив – Plutonix

+0

Как бы вы это сделали? – Quad

+0

Вы уверены, что это ошибка? 'listarray' не' ArrayList'? добавьте обработчик при создании метки – Plutonix

ответ

1

Вам нужно добавить обработчик событий для каждой метки в массиве

For Each l As Label In labelArray 
AddHandler l.Click, AddressOf myClickHandler 
Next 

Затем в функции обработчика:

Private Sub myClickHandler(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Dim clickedLabel As Label = DirectCast(sender, Label) ' Cast the sending object into a Label object 
    ' then do whatever you want with the label such as get it's text and show it in a message box: 
    MessageBox.Show("Label text Clicked was: " & clickedLabel.Text) 
End Sub 
+0

, который работает! спасибо: D – Quad

+0

Да, имейте в виду, когда вы добавляете новые метки в массив, вы также захотите добавить обработчик к их клик-событию. Этот код будет заботиться только о тех, которые в данный момент находятся в массиве. –

+0

, так что мне делать, если я хочу знать, на что нажата метка из массива? – Quad

Смежные вопросы