Maison >développement back-end >C++ >Comment puis-je transmettre des événements d'un contrôle utilisateur à son formulaire parent ?

Comment puis-je transmettre des événements d'un contrôle utilisateur à son formulaire parent ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-05 20:35:39560parcourir

How Can I Pass Events from a User Control to Its Parent Form?

Transmission d'événements vers le haut de la hiérarchie des contrôles utilisateur

Dans les contrôles utilisateur personnalisés, il est souvent souhaitable de rendre les événements déclenchés dans le contrôle accessibles au principal formulaire. Cela devient évident lorsque l'on tente de gérer des événements provenant de sous-contrôles, tels que des changements de valeur dans un contrôle numérique haut-bas.

Création d'un gestionnaire d'événements

Pour résoudre ce problème défi, créez un gestionnaire d'événements dans le contrôle utilisateur qui est déclenché lorsque l'événement souhaité se produit. Ce gestionnaire d'événements doit "faire remonter" l'événement dans le formulaire, lui permettant de le gérer.

Exemple de code

Considérons un contrôle utilisateur avec un bouton nommé "Button1 ":

Contrôle utilisateur :

[Browsable(true)] [Category("Action")] [Description("Invoked when user clicks button")]
public event EventHandler ButtonClick;

protected void Button1_Click(object sender, EventArgs e)
{
    //bubble the event up to the parent
    if (this.ButtonClick!= null)
        this.ButtonClick(this, e);               
}

Principal Formulaire :

UserControl1.ButtonClick += new EventHandler(UserControl_ButtonClick);

protected void UserControl_ButtonClick(object sender, EventArgs e)
{
    //handle the event 
}

Notes

  • Visibilité de l'événement : L'attribut Browsable expose l'événement dans les "événements" du concepteur Visual Studio view.
  • Catégorie d'événement : L'attribut Category spécifie le catégorie de l'événement, telle que « Action ».
  • Description de l'événement : L'attribut Description fournit une brève description de l'événement.
  • Omission de gestion de l'événement : Il est possible d'omettre les attributs ci-dessus, mais la disponibilité du concepteur améliore la convivialité.
  • Amélioré Syntaxe : Les versions plus récentes de Visual Studio prennent en charge une syntaxe plus courte : ButtonClick?.Invoke(this, e); au lieu de if (this.ButtonClick!= null) this.ButtonClick(this, e);.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn