bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
21 nov. 2007 à 14:54
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 2016
-
23 nov. 2007 à 13:49
Bonjour,
Je souhaite créer dynamiquement des ToolStripMenuItems associés à des évènements quand on clique dessus, pour ce faire, rien de plus simple, j'ai créé une fonction (vide):
Et je créé des éléments du menu que j'ajoute, associés avec l'evennement onclick, style:
ToolStripMenuItem mnuItem = new ToolStripMenuItem("Clique moi stp!", null, mnuMonMenu_onClick);
mnuSystemTray.Items.Add(mnuItem);
Quand je clique dessus ca va bien dans la fonction mnuMonMenu_onClick, pas de problème, mais je n'arrive pas à passer un argument à cette fonction. Je comprends rien à l'exemple donné sur MSDN au sujet des EventArgs. Y'a t-il une solution simple (ou tout du moins facile à mettre en oeuvre) ?
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 22 nov. 2007 à 09:08
Non, l'eventArgs ne sert pas à ça, car ce n'est pas toi qui le remplis, mais dans ce cas précis c'est le framework qui déclenche l'évènement et met les paramètres prévus pour cet évènement.
Ce que tu peux faire par contre, c'est quelque chose comme ca (de mémoire, pas compilé ni testé) :
// Création du menu item en l'associant à ta fonction en cas de click
ToolStripMenuItem mnuItem = new ToolStripMenuItem("Configurer", null, mnuMonMenu_onClick));
// On met dans la propriété Tag des infos spécifiques à ce menu Item
mnuItem.Tag = ""{559E7662-E4B0-44DC}"; // Tag est de type objet, tu peux y mettre ce que tu veux
Et lorsque tu récupère le click dans ta fonction :
ToolStripMenuItem mnuItem = source as ToolStripMenuItem;
Object myParam = mnuItem.Tag;
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 22 nov. 2007 à 09:11
En gros, tout les controles du framework possèdent cette fameuse propriété Tag de type object, qui permet justement de la remplir avec des infos en tout genre selon tes besoins -d'embarquer des infos supplémentaire dans un controle sans avoir à le dériver pour rajouter des propriétés spécifiques.
Cela dit, lorsque les infos en questions deviennent vraiment trop spécifiques, il faut mieux dans ce cas spécialiser le controle, c'est à dire le dériver pour en créer un plus adapté, mais ce n'est pas le cas ici.
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 21 nov. 2007 à 17:42
L'évènement Click est levé par le framework, pas par toi, donc c'est lui qui passe les arguments et qui remplis "sender" et "e" avec les 'bonnes' valeurs). Généralement, les choses sont bien faites et dans les arguments que tu recois, tu as ce qu'il faut pour traiter l'évènement (la source par exemple).
Quel genre de paramètres veux tu passer a ton évènement ?
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 21 nov. 2007 à 22:48
Je récupère bien le nom du bouton cliqué dans sender, mais ca ne m'aide pas trop. Je voudrais passer une chaine de caractères. En gros j'ai un menu qui se construit dynamiquement suivant les cartes réseaux installées dans la bécanne. Chaque carte réseau génère un sous menu avec les choix type "sauver profile" "paramétrer", etc etc. Quand l'utilisateur clique sur ces menus, j'ai donc besoin de savoir quelle carte réseau est concernée. J'aimerai y passer en argument l'hardware id de la carte réseau (vous savez, les machins type "{559E7662-E4B0-44DC-93DE-6D089EB4CF12}"), faire un truc du genre (à la construction des menus) :
ToolStripMenuItem mnuItem = new ToolStripMenuItem("Configurer", null, mnuMonMenu_onClick("{559E7662-E4B0-44DC"}));
à la construction du menu. EventArgs a l'air de servir à ça, mais impossible de trouver un exemple d'utilisation concret :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 22 nov. 2007 à 13:56
Hum oui je vois. En fait je pensais à planquer l'info dans le ToolTip au pire, mais puisque qu'il y a un objet prevu pour stocker du tout et n'importe quoi, alors je vais utiliser ça.
Merci!
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 20163 23 nov. 2007 à 13:49
Tu peux créer une classe qui hérite de EventArgs et qui contiendra les champs que tu souhaites.
Et tu te sert ensuite de cette classe pour passer tes arguments.