DaFridge
Messages postés22Date d'inscriptionlundi 25 juin 2007StatutMembreDernière intervention 4 janvier 2008
-
22 oct. 2007 à 19:19
gaffa -
28 oct. 2012 à 06:55
Bonjour.
J'ai une boucle qui permet de créer des DropDwnItems dynamiquement grâce à une boucle.
Cependant je cherche à obtenir un événement différent pour chacun des DropDownItems, et je n'y arrive pas, sans doute parce que j'appelle une foction qui est extérieure à ma boucle et à la fonction contenant cette boucle.
J'ai mis un petit bout de code histoire de me faire comprendre.
int i;
private void myFunction()
{
...
for
(i = 0; i < myArray.Count; i++)
{
ToolStripMenuItem Item = newToolStripMenuItem(myArray[i].ToString(), Image.FromFile("image.gif"), newEventHandler(AjouterItem_Click));
myToolStripMenuItem.DropDownItems.Add(Item);
}
}void AjouterItem_Click(object sender, EventArgs e)
{
MessageBox.Show(i.ToString());
}
Comment faire pour que ma boucle for me crée un DropDownItem avec à chaque fois un événement différent pour chaque valeur de i ?
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 23 oct. 2007 à 09:26
beurk le tableau de EventHandler...
la solution la plus propre à mon sens c'est de repartir de ton idée de départ et d'y ajouter 2 ou 3 trucs :
private void myFunction()
{
...
for (i = 0; i < myArray.Count; i++)
{
ToolStripMenuItem Item = newToolStripMenuItem(myArray[i].ToString(), Image.FromFile("image.gif"), newEventHandler(AjouterItem_Click));
Item.Tag = i;
myToolStripMenuItem.DropDownItems.Add(Item);
}
}
void AjouterItem_Click(object sender, EventArgs e)
{
ToolStripMenuItem item = sender as ToolStripMenuItem;
if (item == null) {
return;
}
MessageBox.Show(item.ToString());
}
cs_niky
Messages postés168Date d'inscriptionjeudi 28 juin 2001StatutMembreDernière intervention18 octobre 20087 22 oct. 2007 à 20:25
Salut,
Tu disposes d'un tableau (myArray) pour le texte des items. Si tu fais pareil pour les événements (en faisant un tableau de EventHandler), tu devrais arriver à faire ce que tu souhaites.
DaFridge
Messages postés22Date d'inscriptionlundi 25 juin 2007StatutMembreDernière intervention 4 janvier 2008 22 oct. 2007 à 21:36
A la fin de l'exécution de myFunction(), tous les DropDownItems ont été créés correctement, mais ils renvoient tous sur la même chose.
La valeur de i n'a pas été prise en compte, tous les DropDownItems renvoient sur la dernière valeur de i.