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#] Récupérer le texte de textBox créées dynamiquement


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut [C#] Récupérer le texte de textBox créées dynamiquement
    Bonjour.

    Je créé dynamiquement des textBox dans un tableLayoutPanel (et donc avec un nom dynamique qui est: "textBoxLigneXColonneY", X et Y étant la position de la cellule dans le tableLayoutPanel).

    Maintenant, j'aimerais récupérer le texte de chaque textBox créée dynamiquement pour le mettre dans une textBox multiline. Le problème c'est que dans mon code je ne peux pas faire cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int iLigne = 1; iLigne < tableLayoutPanelTest.RowCount; iLigne++)
    {
        textBoxLigne+(iLigne)+Colonne+1.text=...
    }
    J'ai donc essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for (int iLigne = 1; iLigne < tableLayoutPanelTest.RowCount; iLigne++)
    {
        //Nom de la textBox de chaque ligne du tableLayoutPanel
        string nomLigne="textBoxLigne"+iLigne+"Colonne"+1;
        TextBox toto = new TextBox();
        toto.Name = nomLigne;
        textBoxResultat.Lines[iLigne-1] = toto.Text;
    }
    Bien évidemment, toto.text ne contient rien puisqu'il vient d'être créé, donc je voudrais savoir comment je dois procéder pour récupérer le texte de chaque textBoxLigneXColonne1 pour le mettre dans toto.text à chaque itération de ma boucle.

    Heureusement que le week-end approche, j'attends vos réponses qui, je l'espère, m'éclaireront pour résoudre ce "léger" problème.

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Salut .

    Quant tu crées tes textBox tu les met dans un tableau, ensuite du parcour ton tableau.

    La deuxième solution consiste à parcourir la collection de contrôle de ta form. C'est celle que je te conseille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    private void recupInfo()
    {
         for(int i = 0 ; i < this.Controls.Count; i ++ )
         {
              if( this.Controls[i] is TextBox && this.Controls[i].Name == leNom)
              {
                    MonResultat += ((TextBox)this.Controls[i]).Text;
              } 
         }
     
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    Merci pour ta réponse. J'ai testé ce que tu as mis sauf que j'ai affiché le résultat monResultat dans un messageBox et il est désespérément vide. Voilà le code correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for (int iLigne = 2; iLigne < tableLayoutPanelTest.RowCount; iLigne++)
    {
      //Nom de la textBox de chaque ligne de tableLayoutPanelTest colonne 1
      string nomLigne = "textBoxLigne" + (iLigne - 1) + "Colonne" + 1;
        if(tableLayoutPanelTest.Controls[iLigne] is TextBox && tableLayoutPanelTest.Controls[iLigne].Name == nomLigne)
        {
          monResultat += ((TextBox)tableLayoutPanelTest.Controls[iLigne]).Text;
        }
      MessageBox.Show("Ligne: "+monResultat);
    }
    J'ai dû louper quelque chose pour sûr. Là en clair, je souhaite récupérer tout ce qu'il y a dans les textBox de la colonne 1, mais l'affichage du messageBox me donne "Ligne:"

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Salut .

    as tu regardé avec le debugger si tu passes bien dans le if ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    En effet, je ne passais pas dans le if, problème de contrôles imbriqués. J'ai pu trouver mon erreur. Merci pour ton aide

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

Discussions similaires

  1. [VB.NET] Récupérer la valeur d'une textbox créée dynamiquement
    Par chicagorange dans le forum Développement Windows
    Réponses: 1
    Dernier message: 15/09/2014, 19h41
  2. Récupérer les valeurs de textboxes créées dynamiquement en JavaScript
    Par zakarinalaw dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/02/2014, 22h04
  3. [Débutant] recuperer la valeur d'un textbox crée dynamiquement
    Par supermec09 dans le forum C#
    Réponses: 2
    Dernier message: 08/03/2012, 19h47
  4. GetFields sur textBox crées dynamiquement
    Par Cabire dans le forum Windows Forms
    Réponses: 14
    Dernier message: 22/02/2008, 10h14
  5. Réponses: 2
    Dernier message: 25/08/2006, 14h06

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