morfol13170
Messages postés14Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention13 novembre 2011
-
3 nov. 2011 à 13:33
Whismeril
Messages postés19025Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention19 avril 2024
-
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.
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 3 nov. 2011 à 13:46
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
"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 ?
Whismeril
Messages postés19025Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention19 avril 2024656 3 nov. 2011 à 17:37
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
morfol13170
Messages postés14Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention13 novembre 2011 4 nov. 2011 à 14:37
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"
Whismeril
Messages postés19025Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention19 avril 2024656 4 nov. 2011 à 17:25
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);
}
}