Générer les noms des objets

Résolu
Signaler
Messages postés
22
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
1 janvier 2008
-
Messages postés
22
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
1 janvier 2008
-
Bonjour à tous,

Je débute en C# et j'ai un petit problème...
je dois générer des noms d'objet automatiquement, je m'explique :
J'ai besoins d'autant de DataGridView que de jours de la semaine contenus dans une table mysql.
Comment puis-je génerer les noms des objets automatiquement avec une boucle ?

DataGridView1
DataGridView2
DataGridView3
etc...

Merci d'avance pour vos réponses...
A voir également:

5 réponses

Messages postés
11
Date d'inscription
mardi 26 décembre 2006
Statut
Membre
Dernière intervention
25 octobre 2007

Bonjour,

En faite, une régle primaire exige qu'on ne créé jamais de variables dans une boucle !!? ;)

En faite, en réflêchissant un peu ton code devrait plutot être ça :

DataGridView dgv = null;

for(i=0, i<DataSource1.rows.count, i++)
{
    dgv = new DataGridView();
     this.Controls.Add(dgv);
      dgv.Id = "toto" + i;
      dgv.location = new Point(...,...); // indique à quel endroit sera placé le controle !
      // reste à renseigner les autres propriétés nécessaire à l'affichage de ton composant graphique
}

ps: Pour info le nommage dynamique des variables au sein même du code n'existe pas en c#

Le savoir est une division commune et bon courage.
Messages postés
11
Date d'inscription
mardi 26 décembre 2006
Statut
Membre
Dernière intervention
25 octobre 2007

Bonjour darksky874,

Je ne sais pas si j'ai bien compris ton problème mais il me parait très simple
tu recupere les informations de ta datasource
tu utilise la propriété datsource.rows.count -> permet de recuperer le nombre d'element dans ta table mysql
et puis tu crée une boucle for (puisque tu connais le nombre d'enregistrement )

Tu peux créer des "controles" dynamiquement dans ton code comme n'importe qu'elle classe du framework : en les instanciant.
Pour tes datagridview, il te suffit de renseigner la propriété "ID" ou "Name" de ton objet pour que tu puisses le reconnaitre ET l'affecter à la propriété "controls" de l'objet conteneur (ou parent) qui hébergera des datagridview

j'espere t'avoir aidé
si j'ai mal compris met plus de détail et le code en question

Cordialement et bon courage,

Le savoir est une division commune.
Messages postés
22
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
1 janvier 2008

Bonjour 54194,

merci pour ta réponse rapide...

ok pour la boucle for en récupérant le nobre d'enregistrement dans la table...

mais à l'interieur de la boucle ???

for(i=0, i<DataSource1.rows.count, i++)
{
    DataGridView ? = new DataGridView();
}

que mettre à la place du point d'intérogation ??

un peu comme en PHP, je sais pas si tu connais :

$ctr1 = 10;

for ($i = 0; $i < $ctr1; $i++)
{

   ${'var'.$i} =  $i*3;

   print ${'text'.$i};

}

Ce code génère 10 variables dont le nom commence par var (var1,var2,var3...), leur donne la valeur de i*3 puis les affiche...

La méthode que tu décris fonctionne sans doute mais pourrais-tu m'en dire plus ??

Merci...
Messages postés
22
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
1 janvier 2008

Oups erreur dans mon code désolé...

$ctr1 = 10;
for ($i = 0; $i < $ctr1; $i++)
{
   ${'var'.$i} =  $i*3;
   print ${'var'.$i};
}
Messages postés
22
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
1 janvier 2008

Merci 54194,

En effet en y réfléchissant bien, creer des variables dans une boucle peut engendrer des problèmes...
Quant au code, c'est exactement ce qu'il me fallait. Je peu donc creer un nombre aléatoire de DataGridView et y accéder par leur id.
Simple quand on y pense, mais je n'y avais pas pensé !!! (je débute...).

Merci encore pour ton aide !