Какой объект был выбран вариант из ContextMenuStrip - PullRequest
1 голос
/ 30 августа 2011

Я делаю приложение формы Windows.Я имею на форме TreeView, я добавляю несколько узлов и добавляю ContextMenuStrip.

  var menu = new ContextMenuStrip();
  menu.Items.Add("Some text", new Bitmap(1, 1), new EventHandler(function_name));

  var treeView = new TreeView(..);
  treeView.ContextMenuStrip = menu;      

  treeView.Nodes.Add(new TreeNode()
  {
         ...
         Tag = someObject
  });

У меня проблемы с тем, как я могу проверить в функции function_name, на каком дереве было щелкнуто и выбрано значение из ContextMenuStrip

изменить

имя функции имя

 public void pokaz_DoubleClick(object sender, EventArgs e)
 {
 }

Ответы [ 3 ]

1 голос
/ 30 августа 2011

Вы можете обработать событие TreeNodeMouseClick.В вашем TreeNodeMouseClickEventHandler у вас будет доступ к аргументу TreeNodeMouseClickEventArgs.Этот аргумент содержит ряд свойств, которые вы можете использовать, чтобы проверить, какая кнопка мыши была нажата на каком узле.Например.

private TreeNode rightClickeNode;

void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        rightClickedNode = e.Node;
    }
}

Затем вы можете получить доступ к rightClickedNode из вашего function_name.

1 голос
/ 30 августа 2011

Вы можете сделать узел выбранным непосредственно перед отображением контекстного меню, а затем вам просто нужно проверить свойство SelectedNode.Как то так:

private void treeView_MouseDown(object sender, MouseEventArgs e)
{
    //See what node is at the location that was just clicked
    var clickedNode = treeView.GetNodeAt(e.Location);

    //Make that node the selected node
    treeView.SelectedNode = clickedNode;
}

private void function_name(object sender, EventArgs e)
{
    var currentNode = treeView.SelectedNode;

    //Do something with currentNode
}
1 голос
/ 30 августа 2011

что такое подпись метода function_name?

обычно вы можете проверить содержимое параметра отправителя, но может случиться, что это TreeView, а не TreeNode, если вы можете проверить свойства параметра e.

Другой способ заключается в том, что при каждом нажатии мыши вы выбираете узел под мышью в TreeView, поэтому при выполнении function_name ваш узел получает treeview.SelectedNode

...