Tableau dynamique [Résolu]

Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
13 novembre 2011
- - Dernière réponse : Whismeril
Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
- 4 nov. 2011 à 17:25
Bonjour à tous, je suis débutant en C# et, je dois faire une petit programme, possédant un "tableau dynamique" pour mon école.
Ne sachant pas combien de ligne je vais avoir besoin pour rentrer mes informations, j'aimerai qu'une nouvelle ligne apparaisse automatiquement, une fois la première complète.

Ne sachant pas encore pas quoi commencer, je me pose un grand nombre de question...
Comment faire un tableau dynamique ? (Sous forme de formulaire ?)
Avec un ArrayList ?
Comment faire pour rentrer mes informations ? Dois - je utiliser plusieurs textboxs ?
Si oui, comment faire pour que mon tableau dynamique, me rajoute automatiquement suffisamment de textbox pour rentrer mes informations.

J'espère que vous pourrez me conseiller sur ces points ainsi, que les futures questions que je pourrais avoir.
Je vous remercie d'avance.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
14325
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
18 décembre 2018
3
Merci
Bonjour,

Pour un tableau dynamique, préfères les collections typées : List<T>.
Pour l'ajout de contrôle de manière dynamique, il faut utiliser :
TextBox lCtl=new TextBox;
MonConteneur.Controls.Add(lCtl)
Et ne pas oublier de définir les caractéristiques de la TextBox.

Sinon, il y a le contrôle ListView aussi.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
13 novembre 2011
0
Merci
Merci à toi, cependant, j'ai encore quelques questions pour le code pour l'ajout de contrôle de manière dynamique.

TextBox lCtl=new TextBox;
MonConteneur.Controls.Add(lCtl)

"MonConteneur" représente quoi ici ? Ça représente ma partie graphique ? ou System.Controls.Add(lCtl); ?
Désolé pour ce type de question, mais j'essaye de m'adapter le plus possible a ce langage de programmation.

De plus, les collections typées : List<T> servent - elles bien a faire en sorte que la fonction d'ajout du textbox se fasse toute seule ?
Commenter la réponse de morfol13170
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
13 novembre 2011
0
Merci
Double post veuillez m'excuser.
Je retire la question pour "MonConteneur", je crois que je suis fatigué ...

Si j'utilise un conteneur de type "panel" c'est bon ? Ou dois - je utiliser un autre type de conteneur ?
Commenter la réponse de morfol13170
Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
0
Merci
Bonsoir,

par exemple, si tu dois faire un tableau de personnes avec comme colonne nom prénom et date de naissance, alors tu crée une classe Personne avec les propriétés nom prénom et naissance.
Ensuite tu instancies une List, ainsi tu pourra ajouter/modifier/supprimer des Personnes dynamiquement dans cette liste.

Pour afficher ta liste, tu peux utiliser un datagridview dont le datasource est ta liste.

Ainsi chaque ligne est affichée, modifiable, supprimable.
Par défaut le datagridview autorise l'ajout, donc une ligne vierge et affichée en bas pour une nouvelle saisie


Whismeril
Commenter la réponse de Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
13 novembre 2011
0
Merci
Merci pour vos réponses, elles me sont d'une grande aide :)

Actuellement, je bute sur l'affichage des textBox dans le panel.
J'aimerai que a chaque fois que je clic sur un bouton une textBox s'affiche dans 4 panels différents et ce sans créer une nouvelle variable textBox.

Pour l'instant j'ai ceci :

            TextBox txtBox1 = new TextBox();
            panel1.Controls.Add(txtBox1);

            TextBox txtBox2 = new TextBox();
            panel2.Controls.Add(txtBox2);

            TextBox txtBox3 = new TextBox();
            panel3.Controls.Add(txtBox3);

            TextBox txtBox4 = new TextBox();
            panel4.Controls.Add(txtBox4);


Je voudrais éviter d'écrire txtBox1; txtBox2 etc ...
Pour cela j'ai pensé a faire une sorte de Compteur dans une balise "while"

        private void button3_Click(object sender, EventArgs e)
        {
            // Variables //
            Int16 NbMax = 100;
            Int32 Compteur = 1;
            TextBox[] txtBox = new TextBox[NbMax];

            while (Compteur < NbMax)
            {

                TextBox[0] txtBox = new TextBox(); FAUX
                panel5.Controls.Add(txtBox); FAUX

            }
        }


Mon but étant de réussir a faire afficher plusieurs textBox dans un même panel, et ce a chaque clic sur le bouton.
Merci encore pour votre aide.
Commenter la réponse de morfol13170
Messages postés
12421
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
0
Merci
Tu peux essayer un truc comme ça (de tête c'est peut-être pas tout à fait ça), mais ça n'est pas économe en lignes de code:


        private void button3_Click(object sender, EventArgs e)
        {
            List MesPanels = new List();
            MesPanels.Add(Panel1);
            MesPanels.Add(Panel2);
            MesPanels.Add(Panel3);
            MesPanels.Add(Panel4);

            for(int i = 0; i < 4; i++)
            {

                TextBox txtBox = new TextBox();//l'instance nest crée que le temps d'une itération, donc pas besoin de tableau
                // si tu souhaites conserver les références de tes textbox, utilise une list<TextBox>
                MesPanels[i].Controls.Add(txtBox);

            }
        }


Whismeril
Commenter la réponse de Whismeril

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.