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#] Comment récupérer les données d'un Label dans un autre Label ?


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 12
    Points
    12
    Par défaut [C#] Comment récupérer les données d'un Label dans un autre Label ?
    Bonjour, je suis débutant en programmation et je me demandais s'il y avait un moyen de récuperer des données contenu dans des labels afin de les afficher dans d'autres labels mais contenue dans une autre fenetre?

    Je vous remercie

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Oui très simplement.

    Dans la fenêtre où il y a les labels à récupérer il suffit de faire par exemple sur le clic d'un bouton


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    otherForm.UpdateLabel(Label1.Text, Label2.Text);

    Puis dans la fenêtre pour afficher les labels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void UpdateLabel(string label1, string label2)
    {
       this.Label1.Text = label1;
       this.Label2.Text = label2;
    }

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Et encore plus simplement :
    Dans la conception de OtherForm, on change la propriété "Modifiers" de label1 en "internal" ou "public".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OtherForm.Label1.Text = label1;

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Et encore plus simplement :
    Dans la conception de OtherForm, on change la propriété "Modifiers" de label1 en "internal" ou "public".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OtherForm.Label1.Text = label1;
    Oui, et tu casses l'encapsulation, qui est un des plus importants principes de la POO... Là, il devient carrément possible de remplacer le label lui-même, pas seulement son texte ! Pas terrible...

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Oui, et tu casses l'encapsulation, qui est un des plus importants principes de la POO
    Tu veux dire que quelque soit la classe que tu crées, toutes les variables sont "private" (éventuellemnt protected), et qu'on ne peut les lire/modifier que via des properties ?

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Tu veux dire que quelque soit la classe que tu crées, toutes les variables sont "private" (éventuellemnt protected), et qu'on ne peut les lire/modifier que via des properties ?
    Il voulait peut-être dire que tu donnes trop de visibilité au Label. Une propriété sur le label permettrait directement de changer le label lui même avec ses propriétés comme la couleur, taille etc..)

    Une propriété sur le Text du Label serait suffisant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OtherForm.TextLabel1 = label1;
    Avec dans le setter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string TextLabel1
    {
       set { Label1.Text = value ;} 
    }

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Tu veux dire que quelque soit la classe que tu crées, toutes les variables sont "private" (éventuellemnt protected), et qu'on ne peut les lire/modifier que via des properties ?
    Oui, et encore... en l'occurrence ce n'est pas le label lui-même qu'il faut rendre public, mais juste son texte.

    Citation Envoyé par hegros Voir le message
    Il voulait peut-être dire que tu donnes trop de visibilité au Label. Une propriété sur le label permettrait directement de changer le label lui même avec ses propriétés comme la couleur, taille etc..)

    Une propriété sur le Text du Label serait suffisant.
    C'est ça

    Citation Envoyé par hegros Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OtherForm.TextLabel1 = label1;
    Avec dans le setter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string TextLabel1
    {
       set { Label1.Text = value ;} 
    }
    Par contre j'aime pas trop le principe des propriétés "write-only", je trouve que ça n'a pas vraiment de sens... si tu peux l'écrire, tu devrais pouvoir la lire

  8. #8
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Par contre j'aime pas trop le principe des propriétés "write-only", je trouve que ça n'a pas vraiment de sens... si tu peux l'écrire, tu devrais pouvoir la lire
    Je pars du principe qu'un code ne doit écrit que lorsqu'il a un besoin et pour le cas de l'exemple il n'y a que besoin d'écrire.

    D'ailleurs c'est aussi pour cela que ma proposition de départ n'utilisait pas les propriétés. Avec l'appel d'une méthode comme UpdateLabel de l'autre form cette dernière peut faire ce qu'elle veut (écrire ou lire) sur son label en plus de changer seulement le texte il peut y avoir d'autres choses à faire.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    D'accord je viens de voir vos messages mais j'ai un peu de mal à comprendre.

    Je récupère mes labels dans ma form1 par exemple, avec l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.UpdateLabel(label1.Text);
    Parce que lorsque je met OtherForm ca ne lui plait pas à visual studio ^^.

    De plus lorsque je met l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void UpdateLabel(string label1)
            {
                this.label1.Text = label1;
     
            }
    dans la fenetre (form3) ou je veut le recuperer, j'ai le probleme suivant:

    Erreur 1 'WindowsFormsApplication1.Form1' ne contient pas de définition pour 'UpdateLabel' C:\Documents and Settings\Propriétaire\mes documents\visual studio 2010\Projects\Helisecurite\Helisecurite\Form1.cs
    Je suis vraiment novice et j'ai quelque peu du mal...

    Merci pour votre aide

  10. #10
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par walkn2 Voir le message
    D'accord je viens de voir vos messages mais j'ai un peu de mal à comprendre.

    Je récupère mes labels dans ma form1 par exemple, avec l'instruction :

    Form1.UpdateLabel(label1.Text);

    Parce que lorsque je met OtherForm ca ne lui plait pas à visual studio ^^.
    C'est normal il faut ajouter une nouvelle form à ton projet visual studio (clic droit/ajouter nouveau fichier/windows form) et l'appeller OtherForm puis en instancier une par exemple dans le constructeur de ta Form1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Form1
    {
    private OtherForm otherForm;
     
    public Form1()
    {
       otherForm = new OtherForm();
    }
    }
    Mais manifestement toi tu l'as appelé Form3 donc il suffit juste de renommer au pire OtherForm par Form3.


    De plus lorsque je met l'instruction :

    public void UpdateLabel(string label1)
    {
    this.label1.Text = label1;

    }

    dans la fenetre (form3) ou je veut le recuperer, j'ai le probleme suivant:

    Erreur 1 'WindowsFormsApplication1.Form1' ne contient pas de définition pour 'UpdateLabel' C:\Documents and Settings\Propriétaire\mes documents\visual studio 2010\Projects\Helisecurite\Helisecurite\Form1.cs

    Je suis vraiment novice et j'ai quelque peu du mal...

    Merci pour votre aide
    Normal puisque tu fais appel à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.UpdateLabel(label1.Text);
    Hors UpdateLabel n'existe pas dans Form1 mais dans Form3 comme toi même tu le dis. Il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form3.UpdateLabel(label1.Text);

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    J'ai un peu de mal à comprendre,

    J'ai bien modifier mon code dans ma form1 j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form3.UpdateLabel(labelàrecuperer.Text);
    Et dans ma form3 (la ou je veut recuperer les données) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void UpdateLabel(string label_dans_lequel_je_veut_ecrire)
            {
                this. label_dans_lequel_je_veut_ecrire.Text =  label_dans_lequel_je_veut_ecrire;
     
            }
    Mais une nouvelle erreur se produit:

    Erreur 1 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'WindowsFormsApplication1.Form3.UpdateLabel(string)' C:\Documents and Settings\Propriétaire\mes documents\visual studio 2010\Projects\Helisecurite\Helisecurite\Form1.cs
    Merci pour votre aide

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Ah c'est bon j'ai compris ca marche!!!!

    Une erreur de debutant j'avais appelé ma form3=F3 donc j'ai écrit:
    F3.updatelabel...etc

    Erreur de débutant^^

    Merci beaucoup.

    A bientot je pense

  13. #13
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Il y 'a une nuance en fait entre écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form3.UpdateLabel(labelàrecuperer.Text);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    form3 = new Form3();
    form3.UpdateLabel(labelàrecuperer.Text);
    Dans la première écriture on attends à ce que UpdateLabel soit une méthode statique et dans l'autre non (lire un cours et un tutorial la dessus méthode statique vs méthode non statique)

    Entre parenthèse : le paramètre de la méthode UpdateLabel ce n'est pas le label dans lequel tu veux écrire mais le text du label que tu veux récupérer (mauvais nommage du paramètre)

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Deja de retour, toujours pour le meme probleme, cela marche correctement pour des label,textbox,combobox...

    Mais je voudrais recuperer l'etat d'une checkbox de ma form1 dans ma form3.
    C'est a dire que si la checkbox est selectionner dans la form1 qu'elle se selectionne aussi dans la form3

    Merci

  15. #15
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Normalement tu devrais avoir compris comment faire, un petit effort

    Tu joues sur l'événement CheckedChanged de ta form1 et dedans un coup de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form3.UpdateCheckBox(mycheckBox.Checked);
    Le code de UpdateCheckBox va sans dire dans Form3...

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Oui effectivement c'etait tout bete, je commence à imprimer le C# ^^

    C'est bon!!!
    Super!

    Merci beaucoup en tout cas

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/12/2012, 21h24
  2. Comment recupérer les données d'un formulaire dans un autre
    Par coolanso dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 11/11/2011, 21h46
  3. Récupérer les données d'une liste dans une autre liste
    Par benoit knk dans le forum SharePoint
    Réponses: 2
    Dernier message: 23/05/2008, 16h10
  4. Réponses: 3
    Dernier message: 06/07/2006, 18h49
  5. [VB6] MySQL Comment récupérer les données ?
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/02/2006, 14h58

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