C # WinForms - TreeView, menú contextual
-
05-07-2019 - |
Pregunta
Supongamos que estoy usando un menú contextual para agregar nodos secundarios a un control de vista de árbol.
(1) Estoy haciendo clic derecho en el nodo
(2) menú contextual emergente
(3) luego hago clic en " Añadir " elemento del menú
(4) se abre un cuadro de diálogo
(5) Ingresé el nombre en ese DialogBox y presioné OK
(6) Se crea un nuevo nodo.
¿Cómo puedo obtener la referencia del nodo actual cuando hago clic en el elemento del menú contextual?
Necesito esto porque el objeto principal se almacena en la propiedad Tag del nodo actual.
Solución
Si maneja TreeNodeMouseClick
, luego a su TreeNodeMouseClickEventHandler
se le pasará un argumento TreeNodeMouseClickEventArgs
.
TreeNodeMouseClickEventArgs.Node será la referencia de TreeNode que desee. Consulte el TreeNodeMouseClick
docs para un ejemplo similar a:
void treeView1_NodeMouseClick(object sender,
TreeNodeMouseClickEventArgs e)
{
TreeNode theTreeNodeIWant = e.Node
}
Si lo necesita, puede almacenar una referencia en una variable miembro para que otro método pueda acceder a ella.
Otros consejos
Puede obtener la posición del mouse desde
System.Windows.Forms.Cursor.Position
Guarda esto antes de mostrar el menú contextual.
Luego use el método en la vista de árbol que contiene sus artículos
GetChildAtPoint(Point)
y agrega un niño debajo de eso.