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 :

Débutant C#, passage de paramètres entre deux fenêtres : mon code ne fonctionne pas


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Débutant C#, passage de paramètres entre deux fenêtres : mon code ne fonctionne pas
    Bonjour,

    Je suis débutant en C#. Depuis plusieurs heures je bloque sur le problème suivant: j'ai deux pages form1 et form2. Lorsque je clique sur le bouton (Btn1) de form1 il doit ouvrir form2 dans laquelle je saisie une valeure (Txt1) qui doit être renvoyée dans form1 via un second bouton (Btn2).

    Voici le code de 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WTest
    {
        public partial class Form1 : Form
        {
            public Form1()
            {   
                InitializeComponent();
     
     
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
            private string val;
     
    	public string Val
    	{
    		set { val = value;}
    	}
            textBox1.text=val;
            }
     
     
            }
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm = new Form2();
                frm.Show();
            }
            }
        }
    Voici maintenant le code de 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
    21
    22
    23
    24
    25
    26
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WTest
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
     
            private void BtnOk_Click(object sender, EventArgs e)
            {
                Form1 frm = new Form1();
                frm.Val = textBox1.Text;
                frm.Show();
            }
        }
    }
    Ces codes me génèrent une dizaine d'erreurs.
    Je ne comprends pas.

    Quelqu'un peut il m'aider?

  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
    Ajoute une propriété sur ton second formulaire afin de pouvoir accéder à l'information souhaitée depuis le premier. Et vu ce que tu veux faire, afficher la seconde fenêtre en modal semble plus adapté (à priori en tout cas).

    En gros, cela donnerait quelque chose comme ça
    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
    public class Form1 : Form
    {
        ...
     
        private void button1_Click(object sender, EventArgs e)
        {
            string maValeur = null;
            using (Form2 frm = new Form2())
            {
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    maValeur = frm.MaValeur;
                }
            }
            ...
        }
    }
    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
    public class Form2 : Form
    {
        private string _maValeur;
        public string MaValeur
        {  
            get { return _maValeur; }
        }
     
        ...
     
        private void BtnOk_Click(object sender, EventArgs e)
        {
            _maValeur = textBox1.Text;
            // On ferme le formulaire suite à la validation de l'utilisateur
            this.DialogResult = DialogResult.OK;
        }
    }

  3. #3
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Bonsoir,

    Tu pourrais t'inspirer de cette discution
    http://www.developpez.net/forums/d13...enaitre-fille/

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 67
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    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
     
    public Form1()
            {   
                InitializeComponent();
     
     
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
            private string val;
     
    	public string Val
    	{
    		set { val = value;}
    	}
            textBox1.text=val;
            }
    C'est un peu le fouillie dans ton code, il manque des parenthèses un peu partout. Ou alors c'est le copier/coller qui à foiré?
    Si tu veux plus d'explications sur les erreur, donnes les nous, ce sera plus simple.

    Pour ce que tu veux faire, moi je mettrais aussi la deuxieme Form en modal, c'est à dire en ShowDialog() au lieu de Show(), ce qui permet de l'ouvrir en modal, et donc d'etre en premier plan, et de ne plus avoir accés à ta Form1 tant que tu n'auras pas fermé ta Form2.
    Ensuite pour récupérer les valeurs, je placerais une variable public dans Form1 pour y avoir accés depuis Form2, et la modifier.

    bonne journée

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Ou alors tout simplement tu crées un accesseur( getVal() ) dans la classe de ta form2, qui renvoie cette valeur.
    Avec le gestionnaire d'evenement tu appel une fonction de la form1 (donc instance et tout le reste) qui va d'bord recuperer la valeur et l'afficher dans ta textbox en question.

  6. #6
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    J'ai eu quelque chose de similaire à faire y'a deux semaines.

    Ce que je te propose :

    - Tu mets un bouton sur ton form1 que tu appelles bt_actualiser (par exemple)
    - Tu créés une variable public sur ton form1, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static string taVariable;
    - Sur ton form2, sur l'évènement textChanged de ta textBox, tu mets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form1.taVariable = tonTextBox.Text;
    - Dans l'évènement click de ton bt_actualiser tu mets ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Je ne sais pas dans quoi tu veux mettre le texte de ta textBox de ton form2, mettons que ce soit un label
    monLabel.Text = taVariable;
    J'espères t'avoir aidé ^^

Discussions similaires

  1. Passage de paramètres entre deux fenêtres
    Par mosaique dans le forum WinDev
    Réponses: 8
    Dernier message: 21/01/2010, 00h28
  2. Passage de paramètre entre deux pages?
    Par fabszn dans le forum JSF
    Réponses: 18
    Dernier message: 01/11/2007, 00h15
  3. Réponses: 2
    Dernier message: 09/06/2006, 19h34
  4. Passage d'information entre deux fenêtres
    Par kuuya dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/08/2005, 14h35
  5. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 11h14

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