2 votes

Comment faire en sorte que l'expéditeur d'un eventhandler soit un contrôle personnalisé et non les étiquettes qu'il contient ?

J'ai créé un contrôle personnalisé qui est en fait juste deux étiquettes dans un panneau. Je veux ajouter un événement pour que, lorsque mon contrôle personnalisé est cliqué (ce qui reviendrait à cliquer sur l'une ou l'autre des étiquettes), il renvoie les propriétés de l'ensemble du contrôle. Je pense que cela signifierait que l'expéditeur dans le gestionnaire d'événements serait mon contrôle personnalisé et non l'une des étiquettes. Je ne sais pas si j'ai été clair, mais ce que je veux dire, c'est qu'il faut traiter le contrôle comme un "tout" lorsqu'il est cliqué J'espère que vous avez compris.

Comment puis-je le faire ? Merci d'avance

1voto

Pieter van Ginkel Points 17057

Ce que vous pouvez faire, c'est laisser le contrôle personnalisé consommer l'événement de l'étiquette, et implémenter un nouvel événement dans le contrôle personnalisé. Ensuite, lorsque l'événement de l'étiquette se déclenche, vous pouvez déclencher votre propre événement à partir du contrôle personnalisé.

Par exemple :

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    public event EventHandler MyCustomClickEvent;

    protected virtual void OnMyCustomClickEvent(EventArgs e)
    {
        // Here, you use the "this" so it's your own control. You can also
        // customize the EventArgs to pass something you'd like.

        if (MyCustomClickEvent != null)
            MyCustomClickEvent(this, e);
    }

    private void label1_Click(object sender, EventArgs e)
    {
        OnMyCustomClickEvent(EventArgs.Empty);
    }
}

0voto

Matt Ellen Points 5270

Vous pouvez obtenir l'objet conteneur de votre étiquette et l'intégrer à votre contrôle personnalisé.

private void Label1_Click(object sender, System.EventArgs e)
{
     Box box = (object as Label).Parent as Box;
     if(box != null)
     {
         //Do what you need here.
     }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X