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
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
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; }
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;
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 tu casses l'encapsulation, qui est un des plus importants principes de la POO
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.
Avec dans le setter
Code : Sélectionner tout - Visualiser dans une fenêtre à part OtherForm.TextLabel1 = label1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public string TextLabel1 { set { Label1.Text = value ;} }
Oui, et encore... en l'occurrence ce n'est pas le label lui-même qu'il faut rendre public, mais juste son texte.
C'est ça
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.
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 :
Parce que lorsque je met OtherForm ca ne lui plait pas à visual studio ^^.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Form1.UpdateLabel(label1.Text);
De plus lorsque je met l'instruction :
dans la fenetre (form3) ou je veut le recuperer, j'ai le probleme suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void UpdateLabel(string label1) { this.label1.Text = label1; }
Je suis vraiment novice et j'ai quelque peu du mal...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
Merci pour votre aide
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 :
Mais manifestement toi tu l'as appelé Form3 donc il suffit juste de renommer au pire OtherForm par Form3.
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(); } }
Normal puisque tu fais appel à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
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 Form1.UpdateLabel(label1.Text);
Code : Sélectionner tout - Visualiser dans une fenêtre à part Form3.UpdateLabel(label1.Text);
J'ai un peu de mal à comprendre,
J'ai bien modifier mon code dans ma form1 j'ai :
Et dans ma form3 (la ou je veut recuperer les données) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Form3.UpdateLabel(labelàrecuperer.Text);
Mais une nouvelle erreur se produit:
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; }
Merci pour votre aideErreur 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
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
Il y 'a une nuance en fait entre écrire
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 form3 = new Form3(); form3.UpdateLabel(labelàrecuperer.Text);
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)
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
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
Le code de UpdateCheckBox va sans dire dans Form3...
Code : Sélectionner tout - Visualiser dans une fenêtre à part form3.UpdateCheckBox(mycheckBox.Checked);
Oui effectivement c'etait tout bete, je commence à imprimer le C# ^^
C'est bon!!!
Super!
Merci beaucoup en tout cas
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager