Générer les noms des objets

Résolu
darksky874 Messages postés 22 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 1 janvier 2008 - 23 oct. 2007 à 16:45
darksky874 Messages postés 22 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 1 janvier 2008 - 25 oct. 2007 à 17:23
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...

5 réponses

54194 Messages postés 11 Date d'inscription mardi 26 décembre 2006 Statut Membre Dernière intervention 25 octobre 2007
24 oct. 2007 à 09:18
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.
3
54194 Messages postés 11 Date d'inscription mardi 26 décembre 2006 Statut Membre Dernière intervention 25 octobre 2007
23 oct. 2007 à 17:08
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.
0
darksky874 Messages postés 22 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 1 janvier 2008
24 oct. 2007 à 08:51
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...
0
darksky874 Messages postés 22 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 1 janvier 2008
24 oct. 2007 à 08:53
Oups erreur dans mon code désolé...

$ctr1 = 10;
for ($i = 0; $i < $ctr1; $i++)
{
   ${'var'.$i} =  $i*3;
   print ${'var'.$i};
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
darksky874 Messages postés 22 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 1 janvier 2008
25 oct. 2007 à 17:23
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 !
0
Rejoignez-nous