Reconnaissant l'expéditeur bouton de contrôle dans l'événement click
J'ai fait un bouton personnalisé qui a un champ nommé Data
.
- Je ajouter ce bouton par programmation au cours de l'exécution de mon winform et sur l'ajout j'ai également définir un événement click pour eux. Eh bien, en Fait je n'ai qu'une seule méthode et je m'abonne boutons nouvellement ajoutés à cette méthode.
Mais dans l'événement click je veux accéder à ce Data
champ et de la montrer comme une boîte de message, mais il semble que mon choix n'est pas droit:
CustomButton_Click(object sender, EventArgs e)
{
Button button;
if (sender is Button)
{
button = sender as Button;
}
//How to access "Data" field in the sender button?
//button.Data is not compiling!
}
Mise à JOUR:
Je suis désolé, je ment avec "n'est pas la compilation" que .Data
ne s'affiche pas dans intelisense...
Vous n'avez pas à vérifier si
Ce n'est pas valable de code C# alors bien sûr, cela ne fonctionnera pas. En général, un bouton personnalisé de contrôle doit l'emporter sur le OnClick méthode de sorte qu'il peut mettre en œuvre son propre comportement de l'événement click.
Comment avez-vous essayez d'accéder au champ "Data"?
Il juste n'a pas le montrer dans intelisense...maintenant que je l'ai jeté à
J'ai eu l'idée, merci pour ça!
sender
est un Button
, depuis le as
mot clé permet de s'assurer que votre variable est null
si il ne peut pas lancer votre variable de la classe correcte.Ce n'est pas valable de code C# alors bien sûr, cela ne fonctionnera pas. En général, un bouton personnalisé de contrôle doit l'emporter sur le OnClick méthode de sorte qu'il peut mettre en œuvre son propre comportement de l'événement click.
Comment avez-vous essayez d'accéder au champ "Data"?
Il juste n'a pas le montrer dans intelisense...maintenant que je l'ai jeté à
CustomButton
il n'.J'ai eu l'idée, merci pour ça!
OriginalL'auteur Saeid Yazdani | 2012-07-08
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de cast vers le type de votre classe personnalisée qui a le champ de Données.
Quelque chose comme:
Cette réponse, qui traite du problème de ne pas être en mesure d'accéder aux Données de terrain, mais une meilleure approche de long terme est à suivre de Hans, de commentaires et de remplacer OnClick ou, éventuellement, présenter les événements personnalisés pour rendre les choses un peu plus typesafe - vous actuellement compter sur le câblage de la customhandler (qui est un standard de signature du gestionnaire) pour les boutons de droite. Avec un événement personnalisé, vous pouvez être sûr que le câblage est correct.
+1 pour être plus rapide 😀
OriginalL'auteur David Hall
En supposant que votre bouton personnalisé type est
CustomButton
, vous devriez faire ceci à la place:OriginalL'auteur GETah
Si vous ne voulez pas définir une variable de la manière la plus simple de le faire est:
ou ce que vous voulez.
OriginalL'auteur Elvis Silva Noleto