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 :

Passage de variables entre 3+ Forms [Débutant]


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Par défaut Passage de variables entre 3+ Forms
    Bonjour,

    Je me permets de créer un sujet afin d'obtenir de l'aide pour mon problème.
    J'aimerais passer des variables entre 3 forms (Form1, Form2 et Word(qui génère un Word)).
    Pour l'instant, j'arrive à passer mes infos de Form1 vers Form2, et même afficher mes variables.
    J'ai dans Form1, sur le bouton pour créer le Form2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form2 form2 = new Form2(prenom);
    form2.Show();
    Je peux afficher le prénom dans la Form2, tout va bien. Mais dans le form2, problème sur le code du bouton pour générer le Word :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Word word = new Word();
     word.CreerDocument(prenom);
    La méthode en question affiche simplement le prénom dans un fichier word.

    C'est le drame, prenom "n'existe pas dans le contexte actuel". Pourtant, je peux bien l'afficher dans le form2 dans une textbox !
    Je tiens à préciser que passer une variable que j'ai créée dans form2 vers le word marche parfaitement. En gros, ce qui bloque c'est :
    1->2->3
    1->2 et 2->3

    En vous remerciant d'avance pour votre aide !
    Félix

  2. #2
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Salut,

    Chaque "Form" est un classe. Donc chaque classe possède ces propres variable(s), propriété(s) et méthode(s).
    Donc je pense qu'il te manque soit une variable dans "Form2", soit il faut renvoyer dans ta méthode "word.CreerDocument(la valeur de ta textBox)".

    Form1 Avec un label et un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            private string _prenom;
     
            public Form1()
            {
                InitializeComponent();
                _prenom = "Prenom";
                lblPrenom.Text = _prenom;
            }
     
            private void btGo_Click(object sender, EventArgs e)
            {
                var form2 = new Form2(_prenom);
                form2.Show();
            }
    Form2 avec une TextBox et un Bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            public Form2(string prenom)
            {
                txtPrenom.Text = prenom
                InitializeComponent();
            }
     
            private void btGo_Click(object sender, EventArgs e)
            {
                Word word = new Word();
                word.CreerDocument(txtPrenom.Text);
            }
            }

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Par défaut
    Bonjour katkiller, merci beaucoup de ta réponse.

    Afficher ma variable dans une textbox, c'était juste comme ça, un test, pour dire que mes variables passent bien d'une form à une autre.
    Dans mon cas j'ai une bonne vingtaine de variables, alors j'ai peur que ça ne colle pas tout à fait.
    Est-ce que je dois donc ré-instancier toutes mes variables ou quelque chose comme ça ?

    Merci !

  4. #4
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Tu crées un objet qui va contenir tes valeurs :

    Classe Personne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public class Personne
        {
            public int PersonneId { get; set; }
            public string Nom { get; set; }
            public string Prenom { get; set; }
            public int Age { get; set; }
        }
    Form 1 :
    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 partial class Form1 : Form
        {
            private Personne _personne;
     
            public Form1()
            {
                _personne = new Personne()
                {
                    PersonneId = 1,
                    Nom = "Nom",
                    Prenom = "Prenom",
                    Age = 18
                };
                InitializeComponent();
                lblPrenom.Text = _personne.Prenom;
            }
     
            private void btGo_Click(object sender, EventArgs e)
            {
                var form2 = new Form2(_personne);
                form2.Show();
            }
        }
    Form 2 qui permet de modifier une personne avec des TextBox pour modifier tes infos :
    Et ta méthode CreerDocument doit prendre en paramètre une "Personne".
    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 partial class Form2 : Form
        {
            private Personne _personne;
     
            public Form2(Personne personne)
            {
                _personne = personne;
                InitializeComponent();
                txtNom.Text = _personne.Nom;
                txtPrenom.Text = _personne.Prenom;
                txtAge.Text = _personne.Age.ToString();
     
            }
     
            private void btGo_Click(object sender, EventArgs e)
            {
                _personne.Nom = txtNom.Text;
                _personne.Prenom = txtPrenom.Text;
                _personne.Age = Convert.ToInt32(txtAge.Text);
     
                Word word = new Word();
                word.CreerDocument(_personne);
            }
        }
    Il doit y avoir la possibilité de faire du DataBinding ce qui t'éviterai sur le bouton du "click" d'avoir à remettre les valeurs pour chacune de tes propriétés. Je te mets des lien car j'ai jamais trop essayé en WinForm (C'est mieux géré en WPF).
    Lien1 & Lien2

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Par défaut
    Merci beaucoup de ton aide mais... On s'éloigne un peu du sujet !
    Mon projet est plus complexe, j'ai déjà des classes etc.. Mais j'ai simplifié pour que tous puissent m'apporter leur aide.
    Je ne veux pas modifier dans Form2, les variables qui découlent de Form1. Juste les passer de mon Form1, à mon Form2, à mon Word.
    Peut-être existe-t-il de un moyen de passer directement de ma Form 1 à mon Word ?

    Merci !

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Par défaut
    Double Post :
    Je me permets de joindre un petit projet VS2013 pour illustrer mon problème... Il est super simple, et je pense que ca permettra de donner un aspect plus concret à mon problème.

    D'avance, merci !
    EDIT: Je comprends bien que le form que j'essaie d'instancier sur le bouton demande des paramètres qui ne sont disponibles que dans le "public form"... Mais c'est tout.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Citation Envoyé par katkiller Voir le message
    Chaque "Form" est un classe. Donc chaque classe possède ces propres variable(s), propriété(s) et méthode(s).
    Donc je pense qu'il te manque soit une variable dans "Form2".
    C'est ma première réponse, il te manque une variable privé...

    Test.rar

  8. #8
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Par défaut
    Super, merci beaucoup !
    Ca veut dire que je dois faire la même choses pour mes 21 variables ?
    Faire 21 déclarations "privées". Right ?

    En tout cas merci beaucoup. Je passerais en résolu si tu me dis que c'est bien ce que je dois faire !

  9. #9
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Voici peut être une piste si jamais tu dois te répéter beaucoup.

    Une classe mère BaseForm qui contient ta variable utilisé dans toutes tes Forms.

    Voici un piste :
    TestBis.rar

  10. #10
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Par défaut
    Merci beaucoup ! Je passe en résolu !
    Bonne continuation !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/12/2018, 18h53
  2. Passage par variable entre 2 form
    Par Marie_7 dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/04/2014, 23h39
  3. [vb net]passage de variable entre form !
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/09/2006, 13h06
  4. [VB.Net][debutant]passage de variable entre windows form
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/07/2006, 14h18
  5. [C#] Passage de variables entre 2 forms
    Par Tips dans le forum C#
    Réponses: 6
    Dernier message: 06/12/2005, 16h48

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