C # WinForms - TreeView, контекстное меню - PullRequest
0 голосов
/ 09 сентября 2009

Предположим, я использую контекстное меню для добавления дочерних узлов в элемент управления treeview.

(1) Я щелкаю правой кнопкой мыши по узлу

(2) всплывающее контекстное меню

(3), затем я нажимаю «Добавить» пункт меню

(4) открывается диалоговое окно

(5) Я ввожу имя в этом DialogBox и нажимаю OK

(6) Новый узел создан.

Как я могу получить ссылку на текущий узел при нажатии на элемент контекстного меню?

Мне нужно это, потому что родительский объект хранится в свойстве Tag текущего узла.

Ответы [ 2 ]

7 голосов
/ 09 сентября 2009

Если вы обрабатываете TreeNodeMouseClick, тогда вашему TreeNodeMouseClickEventHandler будет передан аргумент TreeNodeMouseClickEventArgs.

TreeNodeMouseClickEventArgs.Node будет ссылкой на TreeNode, которую вы хотите. См. TreeNodeMouseClick документы для примера, подобного:

void treeView1_NodeMouseClick(object sender,  
    TreeNodeMouseClickEventArgs e)
{
    TreeNode theTreeNodeIWant = e.Node

}

Если вам нужно, вы можете сохранить ссылку в переменной-члене, чтобы другой метод мог получить к ней доступ.

1 голос
/ 09 сентября 2009

Вы можете получить положение мыши от

System.Windows.Forms.Cursor.Position

Сохраните это перед отображением контекстного меню.

Затем используйте метод Treeview, содержащий ваши элементы

GetChildAtPoint(Point)

и добавьте ребенка ниже этого.

...