IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C# 2.0]Faire interagir des user controls


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut [C# 2.0]Faire interagir des user controls
    Hello,

    J'ai un Form qui se compose d'une multitude de user controls imbriqués mais je ne sais pas comment répercuter un évènement créé sur l'un d'entre eux sur un autre user control.
    Par exemple dans mon Form j'ai qq part un user control contenant un treeview (générique) et lorqu'un élément est sélectionné il doit charger des données dans un datagridview se trouvant dans un autre user control.

    Qq'un pourrait il m'éclairer??

    Merci d'avance

  2. #2
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Tu met un événement dans ton treeview, et tu consomme cet evenement dans l'autre usercontrol

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut
    Oui ca je pense bien
    Mais c'est justement comment récupérer l'évènement dans l'autre user control que je ne sais pas comment faire

  4. #4
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    ben comme tous les autres événèments.
    Par exemple, tu te créer un event sur le controle TreevIew :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event EventHandler NoeudSelectionne;
    puis dans ton autre userControl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monUserControlSource.NoeudSelectionne += new EventHandler(maFonction);
    Bien entendu, dans ton cas je penses qu'il serait préférable d'avoir ton propre EventHandler afin d'y faire passer les données que tu veux (ie valeur du noeud sélectionné)

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut
    ok merci

    mais mon userControlSource n'est si simple a récupérer...
    il s'agit de user controls imbriqués donc il n'est pas au premier niveau. De plus les user control sont privés donc je ne peux y accéder directement...

  6. #6
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    moi je pense que l'idéal c'est que ton UserControl fasse remonter l'évènement à la Form qui le contient, et c'est elle qui appellera la méthode correspondante sur l'autre UserControl

  7. #7
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut
    ok merci mais je ne sais pas comment faire remonter l'évènement jusqu'a ma form...

  8. #8
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    comme guitoux te l'a dis :

    Citation Envoyé par guitoux1
    ben comme tous les autres événèments.
    Par exemple, tu te créer un event sur le controle TreevIew :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event EventHandler NoeudSelectionne;
    puis dans ton autre userControl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monUserControlSource.NoeudSelectionne += new EventHandler(maFonction);
    Bien entendu, dans ton cas je penses qu'il serait préférable d'avoir ton propre EventHandler afin d'y faire passer les données que tu veux (ie valeur du noeud sélectionné)

  9. #9
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut
    Dans mon user control AppNavigation j'ai créer un delegate.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public delegate void SelectedNodeHandler(object sender, TreeViewEventArgs e);
    public event SelectedNodeHandler SelectedNode;
    protected virtual void OnSelectedNode(TreeViewEventArgs e)
            {
                SelectedNode(this, e);
            }
     
            private void tvAppNavigation_AfterSelect(object sender, TreeViewEventArgs e)
            {
                OnSelectedNode(e);
            }
    J'arrive a récupérer l'évènement sur ma form en faisant ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SplitContainer sc = (SplitContainer)leftNavigation1.Controls["splitContainer1"];
    namespace.Controls.AppNavigation tr = (namespace.Controls.AppNavigation)sc.Panel1.Controls["appNavigation1"];
     
    tr.SelectedNode += new namespace.Controls.AppNavigation.SelectedNodeHandler(test);
    }
     
    public void test(object sender, TreeViewEventArgs e)
    {
     
    MessageBox.Show(e.Node.FullPath.ToString());
    }
    Mais je doute que ce soit comme ca qu'il faut faire...

  10. #10
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    ben si c'est ça, sauf que il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protected virtual void OnSelectedNode(TreeViewEventArgs e)
    {
        if (SelectedNode != null)
            SelectedNode(this, e);
    }
     
     private void tvAppNavigation_AfterSelect(object sender, TreeViewEventArgs e)
    {
        if (SelectedNode != null)
            OnSelectedNode(e);
    }

  11. #11
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut
    Merci pour la correction

    Oui mais la je suis super dépendant des couches, si je rajoute un splitcontainer entre ca ne marchera plus...

Discussions similaires

  1. [XL-2007] USF faire interagir des combobox
    Par mouftie dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/07/2015, 10h55
  2. Remettre à 0 un panel qui contient des Users Controls
    Par Nadiya dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/09/2010, 12h08
  3. Threads ou AJAX avec des User Control/Webpart
    Par shpdev dans le forum Développement Sharepoint
    Réponses: 0
    Dernier message: 30/08/2010, 15h24
  4. Réponses: 5
    Dernier message: 19/05/2009, 12h08
  5. Réponses: 4
    Dernier message: 22/10/2008, 21h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo