2009-06-23 10 views
1

Dans mon cas, j'ai des panneaux, mais pour être clair, j'utiliserai des boutons dans mon exemple.Comment utiliser "ceci" correctement pour accéder aux contrôles de formulaire?

J'ai 5 (ou plus) boutons et je mets un événement, par exemple - OnMouseHover, à chacun des cinq boutons. Comment puis-je, qui a la souris planait si tous les événements se lient à une méthode

Pour capturer le bouton sur lequel la souris est placée, j'ai essayé d'utiliser "this", mais elle est liée au formulaire lui-même.

private void buttonX_MouseHover(object sender, EventArgs e) 
    { 
     this.Text = "Test"; 
    } 

Je me attendais le texte sur le bouton indiqué où la souris est plané pour changer son texte « Test », mais il est arrivé sur le form.Text seulement.

Dans mon vrai programme, j'ai 60 panneaux et j'utilise à nouveau une méthode pour tous les événements OnMouseHover sur chacun d'eux. Comment obtenir le panneau (ou le bouton dans l'exemple ci-dessus) où la souris est planée? Se réfère toujours à l'instance de classe (le formulaire).

Répondre

8

this Vous devez jeter l'expéditeur à la place:

((Control)sender).Text = "Test"; 

L'expéditeur est (en général) l'instance où l'événement - utile lorsque vous utilisez le même gestionnaire de plusieurs contrôles.

+0

Merci, vous avez sauvé ma journée! J'ai seulement une question. Est-ce que "l'expéditeur" dans tous les événements est lié au contrôle? –

+1

@John: oui, c'est toujours lié à l'instance qui soulève l'événement - dans le cas des contrôles, c'est le contrôle actuel. –

+1

Cependant, lorsque vous déclenchez des événements vous-même, vous devez vous assurer de passer l'instance appropriée ('this') manuellement, car cela n'est pas assuré par le compilateur. Je suppose que c'est ce que Marc veut dire par "généralement" dans sa réponse. –

2

Ceci est toujours la classe, dans ce cas la forme elle-même. L'objet "expéditeur" est le mot magique. Si c'est un bouton, le rejeter dans un bouton. Puisque l'objet n'est qu'une référence, vous pouvez apporter des modifications à l'objet d'envoi.

Questions connexes