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 :

Recup de valeur dans ma 2eme Form [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut Recup de valeur dans ma 2eme Form
    Bonjour, j'ai fais une recherche sur le forum, les solutions ne manquent pas mais pour moi ça ne fonctionne pas..
    Je doit mettre en commun des valeurs entre 2 Form, voila comment je mis prends pour récupérer une valeur de Form1 vers Form2:
    dans Form1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     private void Bt1_Click(object sender, EventArgs e)
            {
                Form Periode = new Periode();
                Periode.Debut = c1;
                Periode.ShowDialog();
            }
    dans Form2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public int Debut { get; set; }
            public Periode(int Vt)
            {
                Debut = Vt;
                InitializeComponent();
            }
    l'erreur est levé dans Form1 :
    ne contient pas une définition pour 'Debut' et aucune méthode d'extension 'Debut' acceptant un premier argument de type 'System.Windows.Forms.Form' n'a été trouvée


    Merci de votre aide

  2. #2
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public int Debut { get; set; }
            public Periode(int Vt)
            {
                Debut = Vt;
                InitializeComponent();
            }
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public int Debut { get; set; }
            public Periode()
            {
                InitializeComponent();
            }
    ou remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void Bt1_Click(object sender, EventArgs e)
            {
                Form Periode = new Periode();
                Periode.Debut = c1;
                Periode.ShowDialog();
            }
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void Bt1_Click(object sender, EventArgs e)
            {
                Form Periode = new Periode(c1);
                Periode.ShowDialog();
            }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Bonsoir meziantou merci pour ton aide,
    étant un peux perdu a force de tester j'ai opté pour la 2eme solution mais n'ai pas très bien compris.
    La variable passe bien de Form1 vers form2, pour le retour de la variable modifié vers Form1 j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      private void BtFermer_Click(object sender, EventArgs e)
            {
                Debut = Convert.ToInt16(TextDebut.Text);
                this.Close();
     
            }
    Mais visiblement c'est pas bon...

  4. #4
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Mais visiblement c'est pas bon...
    Quelle est le message d'erreur.

    Pour info int = Int32.
    Je pense donc que tu devrais faire Convert.ToInt32 et non Convert.ToInt16

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Pas de message d'erreur mais la valeur de c1 n’évolue pas à la fermeture de ma form2.

    l'entier "Debut" est bien à la nouvelle valeur mais ne la transmet pas a c1 lors de la fermeture.

  6. #6
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    A la fermeture de form2 il faut, dans form1, que tu récupères la valeur de la propriété Debut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void Bt1_Click(object sender, EventArgs e)
            {
                Form Periode = new Periode(c1);
                Periode.ShowDialog();
                c1 = Periode.Debut;
            }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Arf "Début" est inconnu dans Form1 ..
    Cet apm j'ai testé beaucoup de chose et à chaque fois dans Form1 il m'était impossible d’accédé aux variables de la form2 comme si elles n’étaient pas publiques.

  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Mouais !
    C'est un peu cradingue ..

    Pour etre un peu plus propre je dirais

    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
    private void Bt1_Click(object sender, EventArgs e)
            {
               DisplayPeriode();  // eviter de mettre du code logique dans les handler d'event
            }
     
    private void DisplayPeriode()
    {
      // mettre les dialogues dans un using
       using (FormPeriode Periode = new FormPeriode(c1))
       {
         DialogResult Res=Periode.ShowDialog();
         if (Res.Equals(DialogResult.OK))
         {
           c1 = Periode.Debut;
         }
       }
    }

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Je ne sais pas utiliser les using, donc je te poste l'erreur :

    Le type ou le nom d'espace de noms 'FormPeriode' est introuvable (une directive using ou une référence d'assembly est-elle manquante*?)

  10. #10
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Arf "Début" est inconnu dans Form1 ..
    Cet apm j'ai testé beaucoup de chose et à chaque fois dans Form1 il m'était impossible d’accédé aux variables de la form2 comme si elles n’étaient pas publiques.
    C'est normal. Lors de la déclaration de la fenêtre tu lui donne comme type Form qui bien sûr ne contient pas de propriété Debut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form Periode = new Periode(c1);
    Il faut que tu lui donne comme type Periode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Periode Periode = new Periode(c1);

  11. #11
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par lolo81 Voir le message
    Je ne sais pas utiliser les using, donc je te poste l'erreur :

    Le type ou le nom d'espace de noms 'FormPeriode' est introuvable (une directive using ou une référence d'assembly est-elle manquante*?)
    Il faut que tu transformes les FormPeriode en Periode dans le code d'olibara ou que tu renommes ta fenêtre en FormPeriode.

  12. #12
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    J'ai vu que tu faisais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form Periode = new Periode(c1);
    Ca me laisse tres perplexe

    Car tu instancie une variable Periode de type Form explicite avec une Classe Periode de type hérité Form

    Ce genre de chose fini par etre tres casse pipe dans la lisibilité de ton code

    Je te propose de renommer ton type Form Periode en FrmPeriode et d'eviter d'utiliser des variables portant le meme nom que ton type

    Donc lors de l'intanciation tu peux alors faire

    FormPeriode Periode = new FormPeriode(c1)

    Periode etant la variable de Type FormPeriode
    FormPeriode etant la definition de ta ta classe qui hérite de Form

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    J'ai modifié comme ceci mais la valeur c1 ne change toujours pas et sans erreur :
    Pour ce soir je crois que je ferai pas plus , demain me lève très tôt,
    merci encore pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            private void BtPeriode_Click(object sender, EventArgs e)
            {
                DisplayPeriode();  // eviter de mettre du code logique dans les handler d'event
            }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            private void DisplayPeriode()
            {
                // mettre les dialogues dans un using
                using (FormPeriode Periode = new FormPeriode(c1))
                {
                    DialogResult Res = Periode.ShowDialog();
                    if (Res.Equals(DialogResult.OK))
                    {
                        c1 = Periode.Debut;
                    }
                }
            }

  14. #14
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DialogResult Res = Periode.ShowDialog();
    Quand tu fermes ta fenêtre il faut que tu mettes la valeur de DialogResult à OK

    http://msdn.microsoft.com/en-us/libr...logresult.aspx

  15. #15
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Meziantou
    de mentionner ce détail qui a effectivement son importance

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Bonsoir,
    je ne vois pas comment mettre DialogResult à OK dans le clic fermeture de ma FormPeriode.

  17. #17
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    C'est pourtant pas bien compliqué

    Ta fenetre a une Propriété DialogResult, tu l'assigne avant la fermeture

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Moi ce qu'il me semblerai logique c'est de faire comme ça dans FormPeriode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            private void BtFermer_Click(object sender, EventArgs e)
            {
                Debut = Convert.ToInt32(TextDebut.Text);
                Res = DialogResult.OK;
                this.Close();
            }
    Mais Res est inconnu dans la FormPeriode.

  19. #19
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            private void BtFermer_Click(object sender, EventArgs e)
            {
                Debut = Convert.ToInt32(TextDebut.Text);
                this.DialogResult = DialogResult.OK;
                this.Close();
            }

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut

    Merci pour votre patience, le résultat est Ok désolé si j'ai merdé sur la fin.
    Bonne soirée.

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

Discussions similaires

  1. [Débutant] regex : recup de valeur dans une string
    Par puke502 dans le forum C#
    Réponses: 9
    Dernier message: 29/11/2013, 16h06
  2. Recuper une valeur dans un tableau
    Par pfakhmaies dans le forum Ruby
    Réponses: 1
    Dernier message: 06/06/2012, 22h29
  3. [MySQL] Recup de variable dans lien puis form
    Par bromlecornu dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/08/2010, 16h29
  4. (D7) recuper une valeur dans fichier XML
    Par mario9 dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 24/05/2010, 23h56
  5. javascript / asp : impossible recup valeur dans formulaire
    Par BeCool dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/06/2006, 08h27

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