a l'interieur de mon usercontrol, j'ai des label, panel etc.
J'ai besoin qu'une action soit effectuée sur le click de mon UC sans distinction du sous-control cliqué.
J'ai donc rajouté dans le code de mon UC
public new event EventHandler Click
{
add
{
base.Click + = value;
foreach (Control control in Controls)
{
control.Click += value;
}
}
remove
{
base.Click -= value;
foreach (Control control in Controls)
{
control.Click -= value;
}
}
}
C'est cool, ça marche du tonnerre... MAIS (bah oui )
dans la methode UC_Click, j'ai un traitement selon le sender (casté par interface, bref c'est pas le sujet)
or si je click sur un sous-control de mon UC : le sender, c'est le control et non l'UC. Donc ne répond a aucune interface
Donc voila ma question : (enfin...)
Comment doit on coder ce comportement pour que le sender du click soit le UserControl et non un des controls sous-jacents.
Réponse refusée d'office : tu n'as qu'a faire ((Control)sender).Parent
j'ai déjà de la création dynamique de control dans mon UC, et je voudrai éviter de chercher des .Parent.Parent.Parent.Parent.Parent....
Si ça pouvait être fait au niveau d'un UC ça serait top, mais ça se fait au niveau de la Form.
Au vu de la complexité de mon interface, c'est pas envisageable.
A priori ça ne marche que pour les événements clavier.