C # WinForms - TreeView, контекстное меню
-
05-07-2019 - |
Вопрос
Предположим, я использую контекстное меню для добавления дочерних узлов в элемент управления treeview.
(1) Я щелкаю правой кнопкой мыши по узлу
(2) всплывающее контекстное меню
(3), затем я нажимаю " Добавить " пункт меню
(4) открывается диалоговое окно
(5) Я ввожу имя в этом DialogBox и нажимаю OK
(6) Новый узел создан.
Как я могу получить ссылку на текущий узел, когда я нажимаю на пункт контекстного меню?
Мне нужно это, потому что родительский объект хранится в свойстве Tag текущего узла.
Решение
Если вы обрабатываете TreeNodeMouseClick
, тогда вашему TreeNodeMouseClickEventHandler
будет передан аргумент TreeNodeMouseClickEventArgs
.
TreeNodeMouseClickEventArgs.Node будет необходимой ссылкой на TreeNode. См. TreeNodeMouseClick
документы для примера, подобного следующему:
void treeView1_NodeMouseClick(object sender,
TreeNodeMouseClickEventArgs e)
{
TreeNode theTreeNodeIWant = e.Node
}
Если вам нужно, вы можете сохранить ссылку в переменной-члене, чтобы другой метод мог получить к ней доступ.
Другие советы
Вы можете получить положение мыши из
System.Windows.Forms.Cursor.Position
Сохраните это перед отображением контекстного меню.
Затем используйте метод в древовидной структуре, содержащий ваши элементы
GetChildAtPoint(Point)
и добавьте ребенка ниже этого.