C # WinForms - TreeView, Menu contextuel
-
05-07-2019 - |
Question
Supposons que j'utilise un menu contextuel pour ajouter des nœuds enfants à un contrôle d'arborescence.
(1) Je clique avec le bouton droit sur le nœud
(2) menu contextuel pop up
(3), puis je clique sur "Ajouter". élément de menu
(4) une boîte de dialogue s'ouvre
(5) J'ai saisi le nom dans cette boîte de dialogue et appuyé sur OK
(6) Un nouveau nœud est créé.
Comment puis-je obtenir la référence du nœud actuel lorsque je clique sur l'élément de menu contextuel?
J'ai besoin de cela car l'objet parent est stocké dans la propriété Tag du nœud actuel.
La solution
Si vous gérez TreeNodeMouseClick
, votre TreeNodeMouseClickEventHandler
recevra un argument TreeNodeMouseClickEventArgs
.
TreeNodeMouseClickEventArgs.Node sera la référence TreeNode souhaitée. Voir le TreeNodeMouseClick
docs pour un exemple similaire à:
void treeView1_NodeMouseClick(object sender,
TreeNodeMouseClickEventArgs e)
{
TreeNode theTreeNodeIWant = e.Node
}
Si nécessaire, vous pouvez stocker une référence dans une variable membre afin qu'une autre méthode puisse y accéder.
Autres conseils
Vous pouvez obtenir la position de la souris à partir de
System.Windows.Forms.Cursor.Position
Enregistrez ceci avant d'afficher le menu contextuel.
Utilisez ensuite la méthode de l'arborescence contenant vos éléments
GetChildAtPoint(Point)
et ajoutez un enfant en dessous de cela.