Domanda

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.

È stato utile?

Soluzione

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 :)

Altri suggerimenti

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top