Comment cree un evement dans un user control

[Résolu]
Signaler
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013
-
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
-
bonjour
j'ai cree un usercontol avec une texbox
et je voudrais dans mon ecran principal recupere l'evenement click_textbox
il me semble qu'il cree un evenement mais je n'y arrive pas
qulequ'un auais un exemple ?
merci

Jean louis

4 réponses

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
26
Bonjour,

Si je ne me trompe, tu as deux possibilité:

1) Tu donnes accès à ton textbox et mettant une propriété publique dans ton usercontrol.
public TextBox MaTextBox { get { return textBox; }
Ainsi, ta form pourra intercepter le OnClick de ton TextBox

2) Tu propage l'événement OnClick de ta textbox au niveau de ton usercontrol.
Dans le code de ton usercontrol:
public event EventHandler MaTextBoxClick;

//Evénement click au niveau de ton user control
private void textBox_Click(object sender, EventArgs e)
{
   //Propage l'événement
   if (MaTextBoxClick!= null)
     MaTextBoxClick(sender, e);
}
Ainsi, tu pourras t'abonner à cet événement via l'interface designer lorsque tu déposera ton usercontrol. L'événement apparaitra dans la liste des événements.

Bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
une meilleure solution a tout ca : créer une event propriété dans ton user control qui permet de s'abonner directement au click de la textbox de manière transparente au travers du user control :

//dans le user control
public event EventHandler MyTextBoxClick
{
add
{
MyTextBox.Click += value;
}
remove
{
MyTextBox.Click -= value;
}
}

//dans le composant qui possède le usercontrol
MyUserControl.MyTextBoxClick += new EventHandler(MyUserControl_MyTextBoxClick);

Pour finir, tu peux mettre dans ta classe de ton usercontrol l'attribut "DefaultEvent" sur la déclaration de ta classe pour que cet abonnement se fasse de manière automatique lorsque tu double clique sur ton user control dans le designer (ce qui évite de t'abonner au click sur le user control lorsque tu double click) :

[DefaultEvent("MyTextBoxClick")]
public class MyUserControl :UserControl
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

merci
genial

Jean louis
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
26
Bonsoir,

Merci beaucoup leprov pour cette solution, je ne connaissais pas. C'est noté !

Bon week-end (et pas trop de folie !),

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------