Щелкните правой кнопкой мыши на .Net TreeNode - PullRequest
23 голосов
/ 24 января 2011

Я пытаюсь показать всплывающее меню в моем дереве, когда пользователи щелкают правой кнопкой мыши, позволяя им выбирать контекстно-зависимые действия, которые будут применены к выбранному узлу.

В данный момент пользователь должен щелкнуть узел левой кнопкой мыши изатем щелкните правой кнопкой мыши, чтобы выбрать.

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

Ответы [ 3 ]

50 голосов
/ 24 января 2011

Левый и правый щелчки запускают событие щелчка и вызывают изменение выбора.Однако в определенных обстоятельствах (которые я пока не удосужился отследить) выбор изменится с узла, по которому щелкнули правой кнопкой мыши, на первоначально выбранный узел.

Чтобы убедиться, что щелчок правой кнопкой мыши изменяетсяВы можете принудительно изменить выбранный узел, используя событие MouseDown:

treeView.MouseDown += (sender, args) =>
    treeView.SelectedNode = treeView.GetNodeAt(args.X, args.Y);

Немного лучше, как отметил один из других авторов, использовать событие NodeMouseClick:

treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node;
16 голосов
/ 24 января 2011

да. Вот обработка события NodeMouseClick:

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
      treeView1.SelectedNode = e.Node;
}
5 голосов
/ 24 января 2011

Перетащите полосу контекстного меню на форму, затем:

 private void treeView1_MouseDown(object sender, MouseEventArgs e)
 {
   if (e.Button == MouseButtons.Right)
   {
       // Display context menu for eg:
       ContextMenu1.Show();
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...