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

C# Discussion :

Delegate et UserControl


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Par défaut Delegate et UserControl
    Bonjour,

    voici mon problème.
    J'ai mon Form1 qui est l'application principale.
    J'ai créé un UserControl que j'ai intégré dans un Form2(StartIcones) et qui permet à l'utilisateur de faire un choix entre 3 rubriques. Ces rubriques sont symbolisées par des icônes.

    Je voudrais que mon Form1 récupère le choix fait par l'utilisateur.
    j'ai donc utilisé un delegate et un event.

    Si je n'utilise pas de UserControl et fais mon design directement dans mon Form2, pas de problème je récupère correctement le choix de l'utilisateur.
    Mais.. dans le cas d'un UserControl importé dans le Form2(StartIcones) cela ne fonctionne plus.
    Le Form1 ne récupère plus le choix fait dans le Form2(UserControl)
    J'ai mis mon delegate et mon event directement dans le code behind de mon UserControl. Ce qui donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    public partial class MenuPanel : UserControl
        {
            public delegate void EChoixApplication(string reponse);
            public event EChoixApplication monEvent;
     
            public MenuPanel()
            {
                InitializeComponent();
            }
     
            // => Bouton Caisse
            public void PCTBCaisse_Click(object sender, EventArgs e)
            {
                if (monEvent != null)
                { 
                    monEvent(string.Format("{0}", PCTBCaisse.Tag));
                }
            }
     
            // => Bouton Compta
            public void PCTBCompta_Click(object sender, EventArgs e)
            {
                if (monEvent != null)
                {
                    monEvent(string.Format("{0}", PCTBCompta.Tag));
                }
            }
     
            // => Bouton Administration
            public void PCTBAdmin_Click(object sender, EventArgs e)
            {
                if (monEvent != null)
                {
                    monEvent(string.Format("{0}", PCTBAdmin.Tag));
                }
            }
        }
    et mom Form1 "s'abonne" à l'événement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     public Form1()
            {
                InitializeComponent();
     
                StartIcones i = new StartIcones(); 
     
     
                i.Show();
                i.monEvent += new StartIcones.EChoixApplication(ChoixApplication);
     
             }
     
           // Récupération du choix dans une TextBox
            public void ChoixApplication(string reponse)
            {
                textBox1.Text = reponse;
            }
        }
    Auriez-vous une idée?

    Merci

  2. #2
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    il faut s'abonner au event de votre usercontrol (l'instance que utliser form2 )dans form1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class form2:form
    {
      public usercontrol DoChoose ;
      public form2()
      {
       DoChoose =new usercontrol ();
      }
     
    .....
    }
    et dans ton appel dans la form1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     StartIcones i = new StartIcones(); 
                i.DoChoose.monEvent += new StartIcones.usercontrol .EChoixApplication(ChoixApplication);
      i.Show();

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Par défaut
    Bonjour Azstar,

    merci pour votre aide.
    J'ai testé ce que vous proposez, mais le Form 1 ne reconnait pas DoChoose.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i.DoChoose.monEvent += new StartIcones.UserControl.EChoixApplication(ChoixApplication);
    ainsi que le UserControl. Ils sont tous les 2 soulignés.
    Mecri

  4. #4
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    dans form1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Form2 frm = new Form2();
                frm.DoChoose.monEvent += new EChoixApplication(target);
                frm.Show();

    form2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     public partial class Form2 : Form
        {
            public MenuPanel DoChoose;
            public Form2()
            {
     
                InitializeComponent(); 
                DoChoose = new MenuPanel();
            }
    ...................
        }
    usercontrol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public delegate void EChoixApplication(string reponse);
        public partial class MenuPanel : UserControl
        {
     
            public event EChoixApplication monEvent;
     
            public MenuPanel()
            {
                InitializeComponent();
            }
    .............
    }

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Par défaut
    Cela ne change rien, il me dit dans Form1 que Form2 ne contient pas de définition pour UserChoise.

  6. #6
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    UserChoise????

    frm.DoChoose.monEvent += new EChoixApplication(target);

Discussions similaires

  1. [C#] Inserer dynamiquement un userControl
    Par topolino dans le forum ASP.NET
    Réponses: 9
    Dernier message: 23/02/2005, 13h51
  2. [C#] UserControl
    Par topolino dans le forum ASP.NET
    Réponses: 8
    Dernier message: 22/01/2005, 20h26
  3. XMLRAD equivalent usercontrol ASp .NET
    Par le-roy_a dans le forum XMLRAD
    Réponses: 10
    Dernier message: 10/12/2004, 14h09
  4. Réponses: 12
    Dernier message: 18/03/2004, 15h09
  5. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2003, 17h56

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