Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Passer des paramètres à un evenement [ Windows / Formulaire / Winforms / Controls ] (bubbathemaster)

mercredi 21 novembre 2007 à 14:54:38 | Passer des paramètres à un evenement

bubbathemaster

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):

private void mnuMonMenu_onClick(object sender, EventArgs e)
{
}

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) ?

Merci!

mercredi 21 novembre 2007 à 17:42:07 | Re : Passer des paramètres à un evenement

Nikoui

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 ?


Working as designed
www.nikoui.fr

mercredi 21 novembre 2007 à 22:48:33 | Re : Passer des paramètres à un evenement

bubbathemaster

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 :/

jeudi 22 novembre 2007 à 09:08:36 | Re : Passer des paramètres à un evenement

Nikoui

Réponse acceptée !
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;


Working as designed
www.nikoui.fr

jeudi 22 novembre 2007 à 09:11:10 | Re : Passer des paramètres à un evenement

Nikoui

Réponse acceptée !
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.


Working as designed
www.nikoui.fr

jeudi 22 novembre 2007 à 13:56:26 | Re : Passer des paramètres à un evenement

bubbathemaster

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!

vendredi 23 novembre 2007 à 13:49:10 | Re : Passer des paramètres à un evenement

elguevel

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.
 



Cette discussion est classé dans : fonction, clique, passer, onclick, mnumonmenu


Répondre à ce message

Sujets en rapport avec ce message

onClick=history.go(-1) en c# [ par ascj ] Je voudrais savoir le nom de la fonction en C# qui correspond auonClick=history.go(-1).Car lorsque je clique sur mon bouton (Webform) j'utilise la com Passer Matrice comme Paramètre de fonction [ par otavioreis ] Bonjour,Je voudrais créer une fonction qui reçoit une matrice comme paramètre et comme résultat. Comment dois-je passer le paramètre? Comment dois je passer dataset dans une fonction [ par olibara ] Bonjourje suis débutant en C# et j'essaye de trouver les meilleures methode pour effectuer certaines taches1- J'effectue un query mysql qui me remplit Pb avec onclick [ par Kati83 ] Bonjour, je voudrais que lorsque l'on clique sur le bouton envoyer de mon formulaire (en aspx), une fonction soit appelée pour me permettre d'uploader [c#][aspx] Datagrid [ par Kati83 ] Bonjour,J'essaie de mettre en place un datagrid mais j'ai un problème au niveau de la pagination...Ce datagrid me permet de supprimer des enregistreme [c#][asp.net] [ par Kati83 ] Bonjour,J'ai fait un poste il y a une semaine sur le forum c#, et je n'ai toujours pas de réponse.Ca fait une semine que je tourne en rond et je comme Comment passer une partie de la fonction a appler en parametre ? [ par smelmel ] Bonjour,Je sais que ce que je veux faire et faisable, j'avais lu ça quelque part, mais je n'arrive pas à me rappeler ou.Bref ce que je veux faire c'es TextBoxCalaculatrice + 1 ListeBox [ par drcmomo ] Bonjour tout le monde,J'ai un petit soucis que j'ai un peu de mal à regler.Dans mon Frm qui contient : 1 Texbox et 1 ListBoxet des bouton par exemple shutdown et windows vista [ par moi411 ] Bonjour tout le monde,Je veux créer une application qui éteint windows (vista home premium) au bout de x sec, minutes ou heure...Pour ça j'ai créer un fonction en C# [ par T103 ] saj arrive po a trouve cette fonction en c#:InStr(....) celle ci c du Vb et je la voudre en C#mezrci


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.