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

bgcode 5 Messages postés samedi 21 décembre 2002Date d'inscription 23 février 2007 Dernière intervention - 28 juin 2005 à 14:46 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 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é 78 internautes ce mois-ci

Commenter la réponse de cs_coq
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 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.