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 :

définition des variables


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Par défaut définition des variables
    Bonjour,

    J'ai écrit la procédure ci-dessous;
    le problème est comment récupérer dans le 2ème MessageBox (lancé par Form2) la chaîne initialisée dans Form1.

    SVP


    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    ----------------------------------------------------------------- Classe
    namespace PorteeVarable
    {    
            public class MyClass2
            {
                public String var;   
             }
     }
     
    ----------------------------------------------------------------- Form1
    namespace PorteeVarable
    {
        public partial class Form1 : Form
        {
     
            public Form1()
            {
                InitializeComponent();
             }
     
           private void Form1_Load(object sender, EventArgs e)
            {
                MyClass2 myClass2 = new MyClass2();
                myClass2.var = "ess3";
                string i = myClass2.var; 
                MessageBox.Show(i);
             }
     
            private void button1_Click(object sender, EventArgs e)
            {            
                Form2 myForm = new Form2();
                myForm.Show();
            }
     
    ----------------------------------------------------------------- Form2
    namespace PorteeVarable
    {
        public partial class Form2 : Form
        {
                 public Form2()
            {
                InitializeComponent();
            }
     
            private void Form2_Load(object sender, EventArgs e)
            {
                MyClass2 myClass2b = new MyClass2();
                //i2 = myClass2b.var;
                MessageBox.Show("valeur 2 = " + myClass2b.var);        
            }

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2005
    Messages : 391
    Par défaut
    dans form1 il faut que form2 soit declare en variable de classe et non dans ta fonction
    il faut que dans form2 myClass2b soit une variable public

    ensuite tu pourras faire dans form1 form2.myclass2b.var

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    Citation Envoyé par dietrich
    dans form1 il faut que form2 soit declare en variable de classe et non dans ta fonction
    il faut que dans form2 myClass2b soit une variable public

    ensuite tu pourras faire dans form1 form2.myclass2b.var
    salut,

    je pense que c'est plutôt le contraire
    instancie form2 dans form1 en lui passant l'instance de form (avec le mot clé this)
    pour pouvoir faire dans form2 ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Par défaut
    Merci, mais étant novice en C# : que faut-il écrire dans les formulaires
    SVP

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    alors,
    y'a qq modifs à faire ds ton code :

    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
    39
    40
    41
    42
    43
    44
    namespace PorteeVarable
    { 
        public partial class Form1 : Form
        {
            public MyClass2 myClass2;  // tu crées un champ public
    
            public Form1()
            {
                myClass2 = new MyClass2();
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
                myClass2.var = "ess3";
                string i = myClass2.var; 
                MessageBox.Show(i);
            }
    
            private void button1_Click(object sender, EventArgs e)
            { 
                // là, tu passes l'instance de ta form1 à l'objet form2
                Form2 myForm = new Form2(this);
                myForm.Show();
            }
        }
    
        public partial class Form2 : Form
        {
            Form1 maForme1;
            public Form2(Form1 f1)
            {
                InitializeComponent();
                this.maForme1 = f1;     //voilà, comme ça ta form2 connaît l'objet form1 qui l'a créé
            }
    
            private void Form2_Load(object sender, EventArgs e)
            {
                MyClass2 myClass2b = maForm1.myClass2.var;
                MessageBox.Show("valeur 2 = " + myClass2b.var);     //comme ça tu dois récupérer la variable de ta form1
            }
        }
    }
    voili, voilou,
    j'espère que c'était clair...

  6. #6
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    Citation Envoyé par melleb
    alors,
    y'a qq modifs à faire ds ton code :

    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
    39
    40
    41
    42
    43
    44
    namespace PorteeVarable
    { 
        public partial class Form1 : Form
        {
            public MyClass2 myClass2;  // tu crées un champ public
    
            public Form1()
            {
                myClass2 = new MyClass2();
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
                myClass2.var = "ess3";
                string i = myClass2.var; 
                MessageBox.Show(i);
            }
    
            private void button1_Click(object sender, EventArgs e)
            { 
                // là, tu passes l'instance de ta form1 à l'objet form2
                Form2 myForm = new Form2(this);
                myForm.Show();
            }
        }
    
        public partial class Form2 : Form
        {
            Form1 maForme1;
            public Form2(Form1 f1)
            {
                InitializeComponent();
                this.maForme1 = f1;     //voilà, comme ça ta form2 connaît l'objet form1 qui l'a créé
            }
    
            private void Form2_Load(object sender, EventArgs e)
            {
                MyClass2 myClass2b = maForm1.myClass2.var;
                MessageBox.Show("valeur 2 = " + myClass2b.var);     //comme ça tu dois récupérer la variable de ta form1
            }
        }
    }
    voili, voilou,
    j'espère que c'était clair...

    Tu peux me dire la raison de passé form1 à form2 ? C'est très très mauvais comme manière de faire!! Form2 n'as pas d'affaire a connaitre form1. Elle doit agir indépendament. Dans ton exemple. Si je supprime form1 et bien form2 ne fonctionne plus.

    Voici comment faire
    Class User
    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
     
    	public class User
    	{
    		public User()
    		{ } 
     
    		public User(string name)
    		{
    			Name = name;
    		}
     
    		private string _name;
    		public  string Name
    		{
    			get { return _name; }
    			set { _name = value; }
    		}
    	}
    Form1
    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
    	{
    		public Form1()
    		{
    			InitializeComponent();
    		}
    		private void button1_Click(object sender, EventArgs e)
    		{
     
    			User user= new User("shwin");
    			Form2 form = new Form2(user);
    			form.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
    14
    15
    16
    17
    18
    19
    20
     
    	public partial class Form2 : Form
    	{
    		public Form2()
    		{
    			InitializeComponent();
    		}
     
    		public Form2(User user): this()
    		{
    			User = user;
    		}
     
    		private User _user;
    		public User User
    		{
    			get { return _user; }
    			set { _user = value; }
    		}
    	}
    Le truc est ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    User user= new User("shwin");
    Form2 form = new Form2(user);
    form.Show();
    OU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    User user= new User("shwin");
    Form2 form = new Form2();
    form.User = user;
    form.Show();

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Par défaut
    Ca marche parfaitement.

    Un grand merci


  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    oui, en effet shwin
    c'est mieux comme ça
    j'y ai pensé une fois la réponse postée et j'ai pas eu le courage de recommencer...

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

Discussions similaires

  1. Définition des variables de type List
    Par hibou107 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 21/10/2010, 16h44
  2. Définition des variables
    Par moilou2 dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/08/2008, 16h21
  3. [POO] Définition des variables membre static
    Par AurélienB dans le forum Langage
    Réponses: 13
    Dernier message: 18/02/2008, 11h39
  4. Définition des variable dans un fichier.m d'une interface graphique
    Par developpeur82 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 10/05/2007, 14h53
  5. [Système] Problème de définition des variables
    Par SLAM JACK dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 19h53

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