2013-10-03 3 views
1

Je pensais que C# était difficile. Essayez de poster une question dans stackoverflow.Communication de/vers usercontrol dans tabcontrol sous la forme

J'ai une listbox et un bouton dans un usercontrol, lui-même dans un onglet d'un tabcontrol, lui-même sur un formulaire. J'ai besoin de remplir la zone de liste à partir du formulaire lorsque le bouton est cliqué.

form> tabcontrol> tabpage> usercontrol> listbox & bouton

Alors, comment voulez-vous informiez la forme qu'un bouton profondément enfoui a été cliqué, puis remplissez la zone de liste de la forme (ou appelez le usercontrol de la forme pour remplir la liste)?

Merci les gars.

+0

Ajoutez simplement votre propre événement public au contrôle utilisateur. Lancez-le dans le gestionnaire d'événements Click du bouton. –

+0

Cela, j'ai fait. Le problème que j'ai toujours est comment capturer l'événement dans le formulaire. Il me semble qu'il manque quelque chose de fondamental ici. – Lara

Répondre

3

En supposant que votre question concerne WinForms.

Pour la notification: Exposez un événement sur userControl et liez-le à l'événement du bouton, le formulaire sait qu'il s'agit d'enfants.

public class MyUserControl { 
    private Button myButton; 
    public event EventHandler MyControlButtonClicked; 

    public MyUserControl() { 
     ... 
     myButton.Click += OnMyButtonClicked; 
    } 

    private void OnMyButtonClicked(object sender, EventArgs arguments) { 
     if (MyControlButtonClicked != null) { 
      MyControlButtonClicked(this, arguments); 
     } 
    } 
} 

Dans votre formulaire:

public class MyForm { 
    private MyUserControl userControl; 

    public MyForm() { 
    ... 
    userControl.MyControlButtonClicked += OnUserControlButtonClicked; 
    } 

    private void OnUserControlButtonClicked(object sender, EventArgs arguments) { 
     // handle the button click here 
    } 
} 

Pour la population: Le même schéma, utilisez votre contrôle utilisateur en tant que médiateur. Ajoutez une méthode publique sur userControl qui exécutera la population listBox et l'appellera à partir de votre formulaire.

+0

Oui, c'est WinForms. Pourriez-vous s'il vous plaît poster un exemple de code sur la partie de notification? Bien que je comprenne le concept, j'ai essayé et échoué. – Lara

+0

J'ai ajouté un extrait à la réponse. J'espère que c'est clair – YM67549

Questions connexes