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 :

[Débutant] récuperer valeurs des textbox et mettre dans un tableau


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 7
    Points
    7
    Par défaut [Débutant] récuperer valeurs des textbox et mettre dans un tableau
    salut !
    je veux recuperer les valeurs réels entrées dans des textbox et les mettre dans un tableau de réels ..
    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 textBox1_TextChanged(object sender, EventArgs e)
            {
                float[] tab1 = new float[Convert.ToInt32(textBox1.Text)];
                for ( int i = 0; i < Convert.ToInt32(textBox1.Text); i++)
                {
     
                    panel1.AutoSize = true;
                    panel1.Visible = true;
                    TextBox t = new TextBox();
                    t.Location = new Point(0,t.Size.Height* i);
                    panel1.Controls.Add(t);
                    tab1[i] = float.Parse(t.Text); / *c'est la le probleme */
                }
    quelqu'un a une idée ??

  2. #2
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    y a le convert : Convert.toDouble(t.Text);
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    salut Jay , j'ai déja essayé le Convert , aucune erreur. Mais lors du lancement de l'application , ça se bloque et le message d'erreur , c'est que le format d'entré est incorecte. j'ai mis un textbox pour saisir une valeur , le code permet de generer des textbox en fonction de la valeur saisie, et apres je veux mettre ces valeurs dans un tableau pour pouvoir travailler avec.
    seulement voila ... Bloque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void textBox1_TextChanged(object sender, EventArgs e)
            {
                float[] tab1 = new float[Convert.ToInt32(textBox1.Text)];
                for ( int i = 0; i < Convert.ToInt32(textBox1.Text); i++)
                {
     
                    panel1.AutoSize = true;
                    panel1.Visible = true;
                    TextBox t = new TextBox();
                    t.Location = new Point(0,t.Size.Height* i);
                    panel1.Controls.Add(t);
                    //tab1[i] = float.Parse(t.Text);
                    tab1[i] = Convert.ToSingle(t.Text);  
                }

  4. #4
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    donne moi des exemple de valeur pouvant se trouver dans tes textbox
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  5. #5
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    mais c pas possible car si mon souvenir est bon tu as l1, l2....ln dans tes textbox...tu pourras jamais convertir un char en donnée num...la solution est que tu ne stocke dans ton tableau que la partie numérique (pour la retirer tu utilise le substring)...sinon tu revoir le type de ton tableau....un tableau de string peut marcher....ca dépend de ce que tu compte faire des valeur du tableau...
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    l'application se bloque dès que je donne la valeur de depart , qui est un entier (3 par exemple) , avant d'ajouter le tableau tab1 , ça marche normalemnt; j'ai 3 textbox. mais quand j'ai ajouté le code pour recuperer les valeurs des textbox ; ça se bloque au niveau de la valaeur saisie (qui est 3) !

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    j'ai envoyé le message avant de lire ta réponse . les valeurs du tableau sont pour des calcul numerique. Mon idée , c'est : n textbox->tableau [n]->calcul->textbox_resultat
    Je vais essayé de décalrer un tableau de string et convertir les string à chque fois

  8. #8
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    normal a la création de tes textbox elle sont vide et lorsque tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tab1[i] = float.Parse(t.Text);
    ca plante car tu peux pas convertir du "vide" en numérique....
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  9. #9
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    fais ca (je sais pas si c'est ce que tu veux):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                    panel1.AutoSize = true;
                    panel1.Visible = true;
                    TextBox t = new TextBox();
                    t.Location = new Point(0, t.Size.Height * i);
                    panel1.Controls.Add(t);
                    //tab1[i] = float.Parse(t.Text);
                    t.Text = "L("+Convert.ToString(i) + ")";
                    string text = t.Text.Substring(2, t.Text.Length - 3);
                    tab1[i] = Convert.ToDouble(text);
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    j'ai mentionné que je suis débutant , je vais ajouter un bouton valider , et à son nievau , je fait les traitement ...

  11. #11
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    non mais mon code marche regarde essai j'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    private void textBox1_TextChanged(object sender, EventArgs e)
            {
                Double[] tab1 = new Double[Convert.ToInt32(textBox1.Text)];
                for ( int i = 0; i < Convert.ToInt32(textBox1.Text); i++)
                {
                     panel1.AutoSize = true;
                    panel1.Visible = true;
                    TextBox t = new TextBox();
                    t.Location = new Point(0, t.Size.Height * i);
                    panel1.Controls.Add(t);
                    //tab1[i] = float.Parse(t.Text);
                    t.Text = "L("+Convert.ToString(i) + ")";
                    string text = t.Text.Substring(2, t.Text.Length - 3);
                    tab1[i] = Convert.ToDouble(text);  
                }
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  12. #12
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    merci beaucoup Jay, c'est vrai que ça marche , quand j'ai fais L1 , L2 .... c'etait des labels pour numeroter les textbox , qui elles au départ devraient etre vide , et se remplissent des valeurs saisie par l'utisateur. ces valeurs la vont etre mises dans le tableau (disant interne pour des calculs) . je me replonge dans mon code , et je vais voir.

  13. #13
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Me revoila !!! et j'ai trouvé ce que je cherchais
    en fait j'ai mis un bouton "Valider" et à son niveau j'ai dis , (oreach (Control c in panel1.Controls) , et hop , j'accede aux textbox du pannel , je recupere la valeure et je la mis dans le tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    private void button1_Click(object sender, EventArgs e)
            {
                int ln, test = 0;
     
                foreach (Control c in panel1.Controls) if (c.Text == "") test = 1;
                foreach (Control c in panel2.Controls) if (c.Text == "") test = 1;
                if (test == 1) throw (new Exception("Vous devez remplir toutes les cases !!!"));
                else
                {
                    ln = Convert.ToInt32(textBox1.Text);
                    double[] tab1 = new double[ln];
                     int index = 0;
                     foreach (Control c in panel1.Controls)
                     {
                         tab1[index] = Convert.ToDouble(c.Text);
                         index++;
                     }
                     index = 0;
                     double[] tab2 = new double[ln];
                     foreach (Control c in panel2.Controls)
                     {
                         tab2[index] = Convert.ToDouble(c.Text);
                         index++;
                     }
                     double result1=new double();
                     for (int i = 0; i < ln; i++)
                     {
                         result1 += (tab1[i] * tab2[i]);
                     }
                     textBox2.Text = Convert.ToString(result1);
                }
    youpiiiiiiiiiiiiii , ça parrait facile maintenant

  14. #14
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Si tu es ouvert à l'idée, je peux te suggérer quelques façons d'améliorer ton code.

  15. #15
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    heu oui skip , biensure ! toute suggestion est la bienvenue

  16. #16
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Ok, alors commençons par un truc de base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
                     ln = Convert.ToInt32(textBox1.Text);
                    double[] tab1 = new double[ln];
                     int index = 0;
                     foreach (Control c in panel1.Controls)
                     {
                         tab1[index] = Convert.ToDouble(c.Text);
                         index++;
                     }
                     index = 0;
                     double[] tab2 = new double[ln];
                     foreach (Control c in panel2.Controls)
                     {
                         tab2[index] = Convert.ToDouble(c.Text);
                         index++;
                     }
                     double result1=new double();
                     for (int i = 0; i < ln; i++)
                     {
                         result1 += (tab1[i] * tab2[i]);
                     }
                     textBox2.Text = Convert.ToString(result1);
    -Tu trouves pas que les deux boucles "foreach (Control c in panelx.Controls)" se ressemblent beaucoup?
    En fait tu pourras créer une méthode dont la signature serait

    public double[] CreerTableau( Panel pan)

    -Par ailleurs, que se passe-t-il si le nombre de controls dans tes panels est supérieur à ln?

    -Enfin tu pourrais régler cette partie de ton algo que j'ai copiée en une seule boucle for().


    Qu'en penses-tu?

  17. #17
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    J'ajouterais que pour éviter des problèmes de conversion, il serait util de tester si les valeurs des textBox sont bien convertibles (il y aura toujours des utilisateurs pour rentrer une chaine de caractères à la place d'un double!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (!float.TryParse(textbox.text, (System.Globalization.NumberStyles.Float |
         System.Globalization.NumberStyles.AllowThousands),
         culture.NumberFormat,out _surface))
              return false;
    (paramètres du TryParse à adapter à tes besoins)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/02/2015, 21h23
  2. Réponses: 9
    Dernier message: 05/11/2007, 11h05
  3. Réponses: 6
    Dernier message: 15/06/2006, 14h07
  4. [VBA-E] Addition des valeurs des textbox
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 15/02/2006, 14h49
  5. [Débutant]Comment faire des tranches de nombre dans une tabl
    Par Jedecouvreaccess dans le forum Access
    Réponses: 7
    Dernier message: 05/09/2005, 08h46

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