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 :

Communication d'un booléen de form enfant à form parent [Débutant]


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Communication d'un booléen de form enfant à form parent
    Bon voilà, je m'excuse d'avance de cette question quelque peu redondante sur le sujet, qui est la communication entre form. J'ai eu beau lire les autres discussions dessus, j'en suis venu à la conclusion que la pédagogie c'est pas le fort des réponses données. J'ai dans la plupart des cas rien compris, bref, j'expose donc mon problème, qui devrai pas être bien compliqué pour certain :

    J'ai une fenêtre parent (Form1) qui après click dans un menustrip ouvre l'enfant (Form2) constitué de deux txtbox et un bouton "OK", une fois les txtbox rempli, à l'évènement clic de OK je souhaite changer la valeur d'un booléen, et que ce booléen changé puisse être accessible depuis form1 (form1 qui je le précise ne se ferme jamais). Il servira à permettre ou empêcher un autre évènement sur form1 selon sa valeur définie en form2. Bien entendu au clic sur le bouton OK la form2 se ferme.

    Alors j'ai lu un paquet de fois des codes avec get et set, mais disons que le code ne parle pas d'lui même. Les delegate c'est incompréhensible, du moins les tutos ont d'avantage l'air d'être des rappels que de véritables explications pour débutant.
    Donc j'en appel à votre pédagogie si vous pouvez m'expliquer !! merci

  2. #2
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Bonjour,

    Pour moi, 3 possibilités :

    1) Passer un paramètre par référence dans le constructeur de ta Form().

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public Form2(ref Boolean MonParam){...}
    et pour l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Form2 maform = new Form2(ref monBoolean);
    maform.ShowDialog();
    Form2 peut ainsi modifier directement la valeur du paramètre de Form1.

    2) Utiliser la propriété DialogResult

    Dans Form2, en fonction des valeurs définies, définir la valeur de DialogResult.

    Dans Form1, récupérer la valeur via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Form2 maform = new Form2();
     
    switch(maform.ShowDialog())
    {
          case DialogResult.OK :
              ...
              break;
          case DialogResult.Cancel:
              ...
              break;
    }
    3) Définir un événement dans Form2 et s'y abonner depuis Form1.

    Exemple :

    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
     
     
    class Form2
    {
           public event EventHandler MonEvenement;
     
           private void MaFonction()
           {
               if(mesconditions == true)
               {
                    if(MonEvenement != null)
                    {
                          MonEvenement(this, EventArgs.Empty);
                    }
               }
           }
    }
    Pour cette dernière méthode, tu peux éventuellement définir ton propre delegate afin de passer un EventArgs personnalisé qui contiendrait des informations nécessaires.

    Exemple :

    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
     
     
    public class MonEventArgs : EventArgs
    {
        ...
    }
     
    public delegate void MonEventHandler(object sender, MonEventArgs e);
     
    public class Form2()
    {
           public event MonEventHandler MonEvenement;
     
           private void MaFonction()
           {
               if(mesconditions == true)
               {
                    if(MonEvenement != null)
                    {
                          MonEventArgs args = new MonEventArgs();
                          //Définition des propriétés de args...
     
                          MonEvenement(this, args);
                    }
               }
           }
    }
    C'est un peu du vite fait, mais si tu veux plus de précisions sur l'un ou l'autre point, n'hésite pas !
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Alors pour les deux dernières méthodes j'ai un peu du mal à comprendre ce que tu fais car je ne crois pas avoir déjà créé d'évènement et également ce que tu entend par "abonner" ? Pour la première méthode, par le biais du constructeur je comprends mais par contre :

    Je le met ou ? :
    public Form2(ref Boolean MonParam){...}

    dans la form1 ou la deux ? pareil pour l'autre bout de code, où qui va ?

    Pour le moment en form2 j'ai un petit if qui change mon booléen déclaré en variable globale selon les txtbox dans l'évent clic, n'est ce pas la que je devrai mettre en param mon booléen ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    bon voilà, à force de gratter j'ai trouvé et surtout compris comment faire passer mes données entre les forms ! Merci de ton aide tes codes m'ont largement aidé !

  5. #5
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Content d'avoir pu t'aider..

    Pour approfondir le sujet sur les événements, je te conseilles la lecture de cet article : http://freddyboy.developpez.com/dotnet/articles/events/

    Par "abonner", j'entends préciser une méthode qui sera appelée lorsque l'événement sera déclenché.

    De façon simple, on peut voir un élément comme une sorte de liste. Lorsqu'on s'y abonne, on s'inscrit dans la liste, ce qui veut simplement dire "lorsque l'événement se produit, prévient moi !".

    Pour cela on utilise la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ...
    MonObject.UnEvenement += new UnEvenementHandler(nomDelaMethodeAAppeler);
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/03/2011, 14h35
  2. quel évènement ? fermeture form enfant
    Par noobyyy dans le forum C#
    Réponses: 9
    Dernier message: 19/11/2010, 13h50
  3. Form parent et form enfant
    Par HaPouu dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/09/2009, 14h30
  4. Réponses: 3
    Dernier message: 08/05/2009, 22h20
  5. [C#] Application MDI (instancier les form enfants)
    Par EFCAugure dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/10/2005, 11h30

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