Comment cree un evement dans un user control

Résolu
johnnous Messages postés 100 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 24 mai 2013 - 5 déc. 2008 à 13:16
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 5 déc. 2008 à 16:02
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

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
5 déc. 2008 à 14:06
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
---------------------
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
5 déc. 2008 à 15: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
3
johnnous Messages postés 100 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 24 mai 2013
5 déc. 2008 à 15:46
merci
genial

Jean louis
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
5 déc. 2008 à 16:02
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
---------------------
0
Rejoignez-nous