Pregunta

I have a several labels all coded as such:

Public assessment_menu_button As New Label
Public current_label_clicked As New Label

AddHandler assessment_menu_button.Click, AddressOf click_assessment_menu_button

Private Sub click_assessment_menu_button(ByVal sender As System.Object, 
                                         ByVal e As System.EventArgs)
   current_label_clicked = sender
   ' do some other stuff
End Sub

Then, later in my program, I have a Sub which needs to perform a click on whichever label was put into current_label_clicked and raise a click event on it. Something like

Private Sub whatever()
    current_label_clicked.performClick()
End Sub

but you can't do that with labels.

So how do I raise the click event for the label?

Thanks.

¿Fue útil?

Solución

Let's say your label is named Label1.

This Sub is the Sub that will be executed when you click on the label.

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click

End Sub

To raise a label click, you just need to call that event.

Label1_Click(Label1, Nothing)

That's it :)

Otros consejos

It's considered bad form to call the event handler method directly. Put the code you need to call when the label is clicked into a method and call that method from both the label click handler and the whatever method:

Private Sub click_assessment_menu_button(ByVal sender As System.Object, ByVal e As System.EventArgs)
    runLabelCode(sender)

    'other code here
End Sub

Private Sub runLabelCode(sender As Label)
    current_label_clicked = sender

    'other code here
End Sub

'elsewhere in the code
Private Sub Whatever()
    runLabelCode(Label1, Nothing)
End Sub
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top