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#] ShowDialog() valeurs entre 2 formulaires


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Points : 186
    Points
    186
    Par défaut [C#] ShowDialog() valeurs entre 2 formulaires
    Bonjour voila mon problème:

    Dans mon form de base j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    form_saisiIdString form_saisiIdString = new form_saisiIdString();
    form_saisiIdString.ShowDialog();
    
    Ceci appel un second formulaire dans lequel j'ai deux textbox et je voudrais récupérer ces 2 valeurs dans le formulaire qui a appelé saisiIdString mais je ne sais pas comment faire?

    Merci.
    M1000
    Le savoir se partage et le partage est un savoir...

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Dans le code de ton formulaire parent ajoute deux propriétés publiques en écriture seule (la lecture ne servirait à rien dans ton cas) qui seront utilisées par ton formulaire enfant pour assigner le contenu des TextBox à des variables de ton formulaire parent.

    Formulaire parent
    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
    public class Form1 : Form
    {
        private string _chaine1;
        private string _chaine2;
     
        public string Chaine1
        {
            set { _chaine1 = value; }
        }
     
        public string Chaine2
        {
            set { _chaine2 = value; }
        }
     
        private void button1_Click(object sender, EventArgs e)
        {
            // Appel du formulaire enfant
            Form2 f2 = new Form2();
            f2.Owner = this;
            f2.ShowDialog();
            MessageBox.Show(_chaine1 + " / " + _chaine2);
        }
    }
    Formulaire enfant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Form2 : Form
    {
        private void button1_Click(object sender, EventArgs e)
        {
            // Fermeture du formulaire
            // On passe le contenu des TextBox au formulaire parent
            Form1 f1 = (Form1)this.Owner;
            f1.Chaine1 = textBox1.Text;
            f1.Chaine2 = textBox2.Text;
            this.Close();
        }
    }
    Si tu dois envoyer une structure de données plus complexe que deux chaînes (point de vue quantité, par exemple 5 TextBox + 3 RadioButton + ...) tu peux toujours appliquer le même principe mais en passant un objet qui correspondra à la structure à faire passer d'un formulaire à l'autre afin de n'avoir qu'une seule propriété à gérer.

    Le code pourrait être également fait dans l'autre sens, à savoir que les propriétés seraient sur le formulaire enfant (en lecture seule à ce moment). Ces dernières seraient initialisées à la fermeture du formulaire enfant et le formulaire parent n'aurait plus qu'à les récupérer. Par contre cette 2ème méthode n'est valable que si tu as encore accès à ton formulaire enfant (pour pouvoir accéder aux propriétés).

    Formulaire parent
    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
    public partial class Form1 : Form
    {
        private string _chaine1;
        private string _chaine2;
     
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Owner = this;
            f2.ShowDialog();
            _chaine1 = f2.Chaine1;
            _chaine2 = f2.Chaine2;
            MessageBox.Show(_chaine1 + " / " + _chaine2);
        }
    }
    Formulaire enfant
    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
    public class Form2 : Form
    {
        private string _chaine1;
        private string _chaine2;
     
        public string Chaine1
        {
            get { return _chaine1; }
        }
     
        public string Chaine2
        {
            get { return _chaine2; }
        }
     
        private void button1_Click(object sender, EventArgs e)
        {
            // Fermeture du formulaire
            _chaine1 = textBox1.Text;
            _chaine2 = textBox2.Text;
            this.Close();
        }
    }
    Avec la première méthode n'importe quel objet pourrait récupérer les valeurs pour peu qu'il dispose d'une référence sur le formulaire parent. Avec cette méthode, les valeurs renvoyées par ton formulaire enfant ne sont accessibles que par le parent.
    Pas de questions techniques par MP

  3. #3
    Membre habitué Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Points : 186
    Points
    186
    Par défaut
    Merci beaucoup de ton aide cela marche super bien!
    De plus les explications sont claires, efficaces et on les comprend rapidement.
    ++
    M1000
    Le savoir se partage et le partage est un savoir...

  4. #4
    Membre habitué Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Points : 186
    Points
    186
    Par défaut
    Désolé de réouvrir ce post mais j'aurais une question qui rejoint la question initiale:

    Je voudrais pouvoir lorsque j'appel mon formulaire enfant changer des label sur celui en gros selon le bouton sur lequel je clik depuis le formulaire parent je change les labels sur l'enfant.

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    form1 => je clique bouton1
    form2 => lbl= Bonjour
     
    form1 => je clique bouton2
    form2 => lbl= Aurevoir
    Je cherche à faire ceci car j'ai une boite de dialogue qui récupère 2 string et uniquement les labels change.

    Merci
    M1000
    Le savoir se partage et le partage est un savoir...

  5. #5
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Si tu as peu de labels, passe directement le texte à utiliser pour les labels au constructeur de ton formulaire enfant, dans lequel tu initialiseras les labels avec le texte fourni.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Form2()
    {
        InitializeComponent();
    }
     
    public Form2(string labelText1, string labelText2) : this()
    {
        this.label1.Text = labelText1;
        this.label2.Text = labelText2;
    }
    Pas de questions techniques par MP

  6. #6
    Membre habitué Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Points : 186
    Points
    186
    Par défaut
    je comprend pas le lien qui va me faire changer le label dans le Form2 en fonction du bouton cliqué dans le Form1 ?

    désolé...
    M1000
    Le savoir se partage et le partage est un savoir...

  7. #7
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par M1000
    je comprend pas le lien qui va me faire changer le label dans le Form2 en fonction du bouton cliqué dans le Form1 ?
    Lorsque tu vas cliquer sur un bouton, tu sais quel est le texte que tu vas appliquer à tes labels. Au moment de l'appel de ton formulaire enfant tu n'auras qu'à passer ce texte par le constructeur prévu à cet effet
    Pas de questions techniques par MP

  8. #8
    Membre habitué Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Points : 186
    Points
    186
    Par défaut
    Citation Envoyé par StormimOn
    Si tu as peu de labels, passe directement le texte à utiliser pour les labels au constructeur de ton formulaire enfant, dans lequel tu initialiseras les labels avec le texte fourni.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Form2()
    {
        InitializeComponent();
    }
     
    public Form2(string labelText1, string labelText2) : this()
    {
        this.label1.Text = labelText1;
        this.label2.Text = labelText2;
    }
    ce code la c'est un exemple du coté enfant ou parent ?
    waouh je galère fin de journée dur dur

    ca se place ou par rapport a la réponde de ton tout premier post?
    M1000
    Le savoir se partage et le partage est un savoir...

  9. #9
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ce code est côté enfant
    Citation Envoyé par StormimOn
    Si tu as peu de labels, passe directement le texte à utiliser pour les labels au constructeur de ton formulaire enfant, dans lequel tu initialiseras les labels avec le texte fourni.
    Le constructeur par défaut (celui sans paramètres) existe déjà normallement, tu n'as pas besoin de le rajouter (enfin ca dépend avec quoi tu développe évidemment ^^).

    Côté parent il faudra juste appeler différement ton formulaire enfant. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Form2 f2 = new Form2("Fenêtre de bienvenue", "Bonjour");
    f2.Owner = this;
    f2.ShowDialog();
    P.S. : il faut adapter le code à tes besoins bien évidemment
    Pas de questions techniques par MP

  10. #10
    Membre habitué Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Points : 186
    Points
    186
    Par défaut
    Adaptation réussi merci de ta patience !

    Mais franchement pour une fois que quelqu'un prend le temps d'expliquer ... MERCI
    M1000
    Le savoir se partage et le partage est un savoir...

  11. #11
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    N'oublie pas de cliquer sur alors
    Pas de questions techniques par MP

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/05/2010, 21h16
  2. Renvoi de valeur entre formulaires
    Par falco40² dans le forum IHM
    Réponses: 1
    Dernier message: 05/10/2007, 18h14
  3. conserver les valeurs entrées dans un formulaire
    Par mitmit dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2007, 10h09
  4. Transfert de valeur entre formulaires
    Par Sodangbe dans le forum IHM
    Réponses: 2
    Dernier message: 15/12/2006, 17h59
  5. Perte de valeur de paramètre entre 2 formulaires
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2006, 10h13

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