2009-07-30 12 views
0

J'ai un contrôle utilisateur composé d'une liste déroulante et d'une étiquette. Dans mon application, je dois activer ou désactiver certains autres contrôles basés sur la valeur sélectionnée dans cette liste déroulante. Comment accéder à l'événement SelectItemChanged à partir de l'application?Evénement Combobox SelectedItemChanged dans un contrôle utilisateur

+0

Une autre question plus générale serait de savoir comment accéder à un gestionnaire d'événement d'un composant dans un contrôle utilisateur de l'application? – novacara

Répondre

0
+0

De toute façon ... aucune de ces options n'est disponible pour définir des propriétés dans l'application car la zone de liste déroulante est encapsulée dans le contrôle utilisateur ... – novacara

+0

Ensuite, vous devrez lier un autre événement ou quelque chose à l'application principale afin de pouvoir mettre à jour autres contrôles – SwDevMan81

+0

Je ne comprends pas ce que vous dites. – novacara

2

Vous devez envoyer le gestionnaire d'événements qui va gérer l'événement à votre contrôle personnalisé. Quelque chose de similaire au code suivant:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     YourUserControl userctr = new YourUserControl(); 

     //Sent the event handler linked to OnSelectedValueChanged 
     userctrl.HandleSelectedValueEvent(new EventHandler(OnSelectedValueChanged)); 
    } 

    private void OnSelectedValueChanged(object sender, EventArgs e) 
    { 
     //Do something 
    } 
} 

public partial class YourUserControl : UserControl 
{ 
    public void HandleSelectedValueEvent(EventHandler handler) 
    { 
     this.comboBox1.SelectedIndexChanged += handler; 
    } 
} 
Questions connexes