[C#/WinForms] Acceder à un TreeView depuis un ToolStripMenuItem

Acceder à un TreeView depuis un ToolStripMenuItem [C#/WinForms] - C#/.NET managed - Programmation

Marsh Posté le 07-05-2007 à 11:35:11    

Bonjour,
 
J'ai un TreeView comprenant de multiples TreeViewNode.
 
Suite à un clique droit sur l'un de ces objets, j'ouvre un ToolStripMenu qui me propose différentes actions(les ToolStripMenuItem). Le clique gauche sur l'un de ces ToolStripMenuItem exécute un événement.
 
Depuis le code de cet événement (et donc n'aillant que "object sender" et "EventArg e" ), je souhaite connaître le TreeViewNode sur lequel j'ai effectué le clique droit.
 
D'apres mes premières recherches, l'"EventArg" ne comprend aucune propriété, et je suis perdu dans la quantité d'attributs de l'"object". C'est pourquoi je m'oriente vers ce forum, dont les membres ont, de toute évidence, déjà résolu ce problème qui me semble courant dans la programmation en WinForms/C#.
 
Merci pour vos réponses.

Reply

Marsh Posté le 07-05-2007 à 11:35:11   

Reply

Marsh Posté le 07-05-2007 à 11:48:19    

ton sender tu peux le caster déjà, ca sera tjs mieux qu'un bete "object"...
 
Ensuite y'a plein d'exemple sur la msdn.
 
Enfin, quelle version de .net tu utilises ?


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 07-05-2007 à 12:03:58    

Tamahome a écrit :

ton sender tu peux le caster déjà, ca sera tjs mieux qu'un bete "object"...


 
J'ai bien essayé de caster cet objet dans la classe "ToolStripMenuItem". Cependant, je subit toujours ce probleme d'abondance des attributs. Le probleme est de remonter jusqu'au niveau du "TreeViewNode" qui l'a lancé le "ToolStripMenu".
 

Tamahome a écrit :

Ensuite y'a plein d'exemple sur la msdn.


 
J'ai bien fait quelques cherche sur msdn à propos du "ToolStripMenuItem". L'exemple ne me permettait pas de remonter jusqu'a l'objet qui avais déclenché le "ToolStripMenu".
 

Tamahome a écrit :

Enfin, quelle version de .net tu utilises ?


 
J'utilise la version 2 du .net fournie avec Visual Studio 2005.
 
Merci

Reply

Marsh Posté le 07-05-2007 à 12:05:04    

poste ton code


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 07-05-2007 à 12:07:47    

Tamahome a écrit :

poste ton code


 
Tout ?!? Pasque Visual Studio c'est plutôt bavard en code source !
Je vais faire une version plus simple...


Message édité par jeanot le 07-05-2007 à 12:08:14
Reply

Marsh Posté le 07-05-2007 à 12:11:00    

je précise, poste ton code "qui pose problème"


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 07-05-2007 à 12:31:46    

Tamahome a écrit :

je précise, poste ton code "qui pose problème"


 

Code :
  1. private void InitializeComponent()
  2. {
  3.             System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Node1" );
  4.             System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Node2" );
  5.             [...]
  6.             this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
  7.                         this.action1ToolStripMenuItem});
  8.             [...]
  9.             this.action1ToolStripMenuItem.Click += new System.EventHandler(this.action1ToolStripMenuItem_Click);
  10.             [...]
  11.             treeNode1.ContextMenuStrip = this.contextMenuStrip1;
  12.             treeNode2.ContextMenuStrip = this.contextMenuStrip1;
  13. }
  14. private void action1ToolStripMenuItem_Click(object sender, EventArgs e)
  15. {
  16.             MessageBox.Show((sender as ToolStripMenuItem).Name + " a déclenché l'evenemet mais je ne sais pas quel Node!" );
  17.             //  Texte affiché : "action1ToolStripMenuItem a déclenché l'evenemet mais je ne sais pas quel Node!"
  18. }


 
Pour simplifier c'est ca. Quand je fait un clique droit sur le "Node1" ou le "Node2", ca ouvre le même  "contextMenuStrip". Mais je veux savoir lequel l'a ouvert.


Message édité par jeanot le 07-05-2007 à 12:39:08
Reply

Marsh Posté le 09-05-2007 à 11:03:56    

UP

Reply

Marsh Posté le 09-05-2007 à 15:40:16    

Et pourquoi ne pas essayer la solution suivante :
Au clic-droit sur le TreeViewNode, en plus d'afficher un ToolStripMenu, garder dans un coin le Noeud source (ou le Tag associé) ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed