begin process at 2013 06 19 21:42:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Créer des ToolStripMenuItem.DropDownItems dynamiquement


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Créer des ToolStripMenuItem.DropDownItems dynamiquement

lundi 22 octobre 2007 à 19:19:09 | Créer des ToolStripMenuItem.DropDownItems dynamiquement

DaFridge

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 ?

Merci d'avance.

lundi 22 octobre 2007 à 20:25:44 | Re : Créer des ToolStripMenuItem.DropDownItems dynamiquement

niky

Membre Club
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.
lundi 22 octobre 2007 à 21:36:02 | Re : Créer des ToolStripMenuItem.DropDownItems dynamiquement

DaFridge

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.

lundi 22 octobre 2007 à 23:13:30 | Re : Créer des ToolStripMenuItem.DropDownItems dynamiquement

niky

Membre Club
EventHandler[] myHandlers = new EventHandlers[myArray.Length];

myHandlers[0] = new EventHandler(AjouterItem_Click);
myHandlers[1] = new EventHandler(SupprimerItem_Click);
myHandlers[2] = new EventHandler(CopierItem_Click);
myHandlers[3] = new EventHandler(RenommerItem_Click);
// ...


  for
(i = 0; i < myArray.Count; i++)
  {
    ToolStripMenuItem Item = newToolStripMenuItem(myArray[i].ToString(), Image.FromFile("image.gif"), myHandlers[i]);
    myToolStripMenuItem.DropDownItems.Add(Item);
  }


Est-ce plus clair ou suis-je à côté de la plaque ?
mardi 23 octobre 2007 à 09:26:43 | Re : Créer des ToolStripMenuItem.DropDownItems dynamiquement

sebmafate

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
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());
}




Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]

dimanche 28 octobre 2012 à 06:55:41 | Re : Créer des ToolStripMenuItem.DropDownItems dynamiquement

gaffa

sebmafate

Merciiiiiiiiiiiiiiiiiiiiiiiii


Cette discussion est classée dans : créer, boucle, dynamiquement, toolstripmenuitem, dropdownitems


Répondre à ce message

Sujets en rapport avec ce message

créer un nom de variable dynamiquement [ par amel468 ] Bonjour, je souhaite créer un nom de variable de facon dynamique pour avoir un truc du style mavar1, marvar2, mavar3,..., marvarN au fur et a mesure q C#>> créer des label dynamiquement... [ par feuillou ] Bonjour,J'aimerais creer un et ajouter des labels (un nombre aleatoire) a l'aide du code suite a un click sur un boutton... Je fais ainsi (en C# :>Lab créer dynamiquement un controle [ par net2e ] Bonsoir je voudrais créer dynamiquement des textbox,label et des picturbox  alors je ne sais pas sil ya un efonction qui permet de faire cela . merci Créer dynamiquement [ par Adidas2 ] Salut à tous,Je voudrais savoir s'il est possible de créer dynamiquement plusieurs composants du même type avec une "for" ?Je voudrais par exemple cré créer un control dans une boucle [ par maitesn1 ] salut tout le monde,je voudrai savoir comment faire pour créer, par exple un texBox dans une boucle for ou while.Mon probleme est que je n'arrive pas Créer dynamiquement des composant Timer et leur associer l'évenement Tick [ par gerver ] Bonsoir, j'aimerai une petite explication sur la création dynamique de composant et l'association d'un évènement Particulièrement pour le composant T Création d'objets graphiques dynamiquement [ par bart0606 ] Bart Bonjour, je veux réaliser un prograzmme pour m'aider à représenter graphiquement un projet. J'aurais besoin de créer un array d'objets graphiq toolstripmenuitem and co [ par cudenetf ] bonjour,je prend des elements d'une table et je voudrais les mettre en toolstripmenuitem dans un menustripje parviens a créer les toolstrip menuitem i Noms de variables dans une boucle for [ par tiju50 ] Je voudrais savoir s'il est possible de créer mais aussi d'appeler des variables dans une boucle for du style :for(int i = 1 ; i for(int methode pour créer 1tablo avec des prop collpase/extend ? [ par amel468 ] bonjour, je dois créer un tableau alimenté par une base de données. Il doit etre fait de lignes parents / enfants. Quand on clique sur une ligne, elle


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,494 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales