Création dynamique de boutons

fabian86 Messages postés 31 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 5 mai 2012 - 25 mai 2008 à 00:14
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 25 mai 2008 à 01:05
bonjour,


J'ai un petit problème que je n'arrive pas à résoudre c'est pour quoi
je viens ici en espérant trouver quelqu'un qui pourra m'aider.


Le problème est simple j'aimerai créer dynamiquement un tableau de bouton.


j'ai donc écrit ceci:


Button[,] mesBtRDV;

mesBtRDV = new Button[18, nbcolonne];

for (int j = 0; j < nbcolonne; j++)

{

for (int i = 0; i < 18; i++)

{

mesBtRDV[j, i] = new Button();

mesBtRDV[j, i].Height = (panMesRdv.Height / 18) - 4;

mesBtRDV[j, i].Width = (panMesRdv.Width / nbcolonne) - 4;

mesBtRDV[j, i].Top = 3 + (mesBtRDV[j, i].Height * i);

mesBtRDV[j, i].Left = 3 + (mesBtRDV[j, i].Width * j);

panMesRdv.Controls.Add(mesBtRDV[j, i]);

}

}

//nbColonne vaut par exemple 3

//le panel fait 587/481


Ce petit bout de code me génère une exception:


l'exception IndexOutOfRangeException n'a pas été gérée


ses conseils de dépannage sont:


s'assurer que l'index n'est pas négatif //c'est ok

s'assurer que la taille maximale de la liste est inférieure à la taille de la liste

s'assurer que les noms des colonnes de donnée sont corrects


Merci de votre aide

4 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 mai 2008 à 00:33
Salut,

Tu n'aurais pas inverser "i" et "j" par hasard ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
25 mai 2008 à 00:36
Salut,

Tu dois juste inverser i et j.  Si tu déclares

mesBtRDV = new Button[18, nbcolonne];

alors dans l'expression mesBtRDV[j, i] , j ne peut aller que jusqu'à 18 (et non jusqu'à 'nbcolonne' comme déclaré dans ta boucle for

Soit tu inverses i et j dans ta boucle for, soit tu écris mesBtRDV[i, j]
0
fabian86 Messages postés 31 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 5 mai 2012
25 mai 2008 à 00:55
merci,

je devais etre plein, lol
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 mai 2008 à 01:05
C'est pour ça qu'on essaie de mettre des vrais noms au lieu de "i", "j" & co, beaucoup plus lisible.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous