2017-01-22 4 views
0

Jungs, sagen wir, ich habe 3 Etiketten mit dem Namen "lblTest1", "lblTest2" und "lblTest3". Alle Etiketten haben dieselbe Hintergrundfarbe, die schwarz ist.Wie erstellt man nur eine Prozedur, die die Hintergrundfarbe der Beschriftung ändert, auf die geklickt wurde?

Jetzt möchte ich die Hintergrundfarbe der Etiketten zu rot, wenn geklickt, so dass ich 3 verschiedene Verfahren für jedes Ereignis benötigen.

Private Sub lblTest1_Click(sender As Object, e As EventArgs) Handles lblTest1.Click 
     lblTest1.BackColor = Color.Red 
End Sub 


Private Sub lblTest2_Click(sender As Object, e As EventArgs) Handles lblTest2.Click 
     lblTest2.BackColor = Color.Red 
End Sub 


Private Sub lblTest3_Click(sender As Object, e As EventArgs) Handles lblTest3.Click 
     lblTest3.BackColor = Color.Red 
End Sub 

Was ich versuche zu tun nur eine Unterfunktion zu erstellen, die die Hintergrundfarbe von was Etikett verändern, die geklickt colors.red. Ist es möglich, dies zu tun? Kannst du es mir bitte erklären? Da ich momentan mit mindestens 300 Labels arbeite und nicht nur die Farbe ändere, sondern auch andere Aktionen, sind die Lösungen dafür sehr hilfreich. :)

+0

'sender' ist das Zielobjekt des Ereignisses, so können Sie es auf eine Methode übergeben. – Plutonix

Antwort

0

Sie können mehrere Ereignisse in der gleichen Unter, wie damit umgehen:

Private Sub label_Click(sender As Object, e As EventArgs) Handles 
     lblTest1.Click, lblTest2.Click, lblTest3.Click 

Um das Label zu erhalten, auf den geklickt wurde, um den Absender zu dem Unter weitergegeben verwenden:

Private Sub label_Click(sender As Object, e As EventArgs) Handles 
     lblTest1.Click, lblTest2.Click, lblTest3.Click 
    cType(sender, Label).BackColor = Color.Red 
End Sub 
+0

schnelle Antwort! Vielen Dank, das hat meine Lösung gelöst, :) – NoobTryingHard

+0

Froh, dass ich helfen kann :-) –

0

Same sub kann Ereignisse für mehrere Steuerelemente (Labels) in diesem Fall verarbeiten.

gehen So wie unten:

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles Label1.Click, Label2.Click, Label3.Click ... 

      Dim myLabel = DirectCast(sender, Label) 
      myLabel.ForeColor = Color.Red 

     End Sub 
Verwandte Themen