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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    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.

  2. #2
    Membre expérimenté
    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 : 47
    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
    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.

  3. #3
    Membre confirmé 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
    Par défaut
    Merci beaucoup de ton aide cela marche super bien!
    De plus les explications sont claires, efficaces et on les comprend rapidement.
    ++

  4. #4
    Membre confirmé 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
    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

  5. #5
    Membre expérimenté
    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 : 47
    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
    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;
    }

  6. #6
    Membre confirmé 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
    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é...

  7. #7
    Membre confirmé 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
    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?

+ 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