Accès a la propriété Text d'une TextBox dynamique [Résolu]

Messages postés
5
Date d'inscription
samedi 21 décembre 2002
Dernière intervention
23 février 2007
- 28 juin 2005 à 14:46 - Dernière réponse :
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 30 juin 2005 à 23:36
private void button2_Click(object sender, EventArgs e)

{

nb=nb_champs.Text;

nombre=Convert.ToInt32(nb);

for (int i = 0; i < nombre; i++)

{


champ = new TextBox(); //Instanciation


label = new Label(); //Instanciation




champ.Location = new Point(100, hauteur + (20 * i)); // 100 px au bord
du panel


label.Location = new Point(10, hauteur + (20 * i)); // 100 px au bord
du panel




champ.Name = "champ" + i;

label.Name = "label" + i;




champ.Size = new Size(110, 20); // 110 * 20

label.Size = new Size(80, 20);



champ.Text = "";

label.Text = "Champ n° " + i;




table.ActiveForm.Height += 20; // On augmente la taille de la forme
pour pas que ca despasse ;)

panel1.Height += 20;



this.panel1.Controls.Add(champ);

this.panel1.Controls.Add(label);



}

//
(String)this.GetType().GetProperty("champ3").GetValue(this, null));

// MessageBox.Show(

}





Bonjour , a la sortie de cette fonction , je n'arrive pas a acceder a
la propriété text de mes champs(textbox) crées dynamiquement en
fonction d'une valeur rentrée dans une autre textbox.

Pourriez vous m'aider svp.

Merci beaucoup.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 30 juin 2005 à 23:36
3
Merci
Salut,

Déjà pour récupérer "champ3" tu devrais, en "temps normal", utiliser GetField et non GetProperty.
Mais comme là tu crées dynamiquement tes textbox tu ne peux pas utiliser la reflection sur la classe de ton formulaire, les textbox n'étant pas définis dans le code.

Tu dois donc parcourir la collection de controle de ton controle conteneur ou simplement maintenir ta propre collection.

Exemple : tu ajoutes une HashTable "texteBoxes" et dans ta boucle tu fais :
this.panel1.Controls.Add(champ);
this.panel1.Controls.Add(label);
// ajout du TextBox à la liste avec comme clé son nom
textBoxes.Add(champ.Name, champ);

Ensuite pour accèder à la propriété Text :
string texte = ((TextBox)textBoxes["champ3"]).Text;

Cocoricoooooooo !!!!
coq
MVP Visual C#

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 28 juin 2005 à 15:51
0
Merci
Salut, tu devrais conserver les références de tes textbox dans un tableau, l'index de position du textbox correspondra à son ordre de creation.. Sinon tu peux retrouver tes textbox dans la propriété Controls de ton Panel, le dernier objet est inséré à la fin de la collection.
Commenter la réponse de Lutinore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.