首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在上下文菜单下单击查找节点

在上下文菜单下单击查找节点
EN

Stack Overflow用户
提问于 2008-08-05 16:21:14
回答 9查看 57.4K关注 0票数 75

如何找出树列表中上下文菜单已被激活的节点?例如,右击节点并从菜单中选择一个选项。

我不能使用TreeViews的SelectedNode属性,因为该节点只被右键单击而没有被选中。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-08-05 16:36:43

可以将鼠标单击事件添加到TreeView,然后使用GetNodeAt根据MouseEventArgs提供的鼠标坐标选择正确的节点。

代码语言:javascript
复制
void treeView1MouseUp(object sender, MouseEventArgs e)
{
    if(e.Button == MouseButtons.Right)
    {
        // Select the clicked node
        treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);

        if(treeView1.SelectedNode != null)
        {
            myContextMenuStrip.Show(treeView1, e.Location);
        }
    }
}
票数 96
EN

Stack Overflow用户

发布于 2010-12-09 07:05:57

这是我的解决方案。将这一行放入TreeView的NodeMouseClick事件中:

代码语言:javascript
复制
 ((TreeView)sender).SelectedNode = e.Node;
票数 21
EN

Stack Overflow用户

发布于 2008-12-11 21:10:43

我发现标准的windows树视图行为选择行为相当烦人。例如,如果您正在使用资源管理器,右键单击一个节点并单击Properties,它将突出显示该节点,并显示您所单击的节点的属性对话框。但是,当您从对话框返回时,高亮显示的节点是在您单击鼠标右键之前选择/高亮显示的节点。我发现这导致了可用性问题,因为我总是对我是否在正确的节点上操作感到困惑。

因此,在我们的许多GUI中,我们通过右键单击来更改选定的树节点,这样就不会产生混淆。这可能与资源管理器之类的标准iwndos应用程序不同(出于可用性的原因,我倾向于在标准窗口应用程序的基础上强烈模拟我们的GUI行为),我相信这一个例外情况会产生更多可用的树。

以下是在右键单击期间更改选择的一些代码:

代码语言:javascript
复制
  private void tree_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  {
     // only need to change selected note during right-click - otherwise tree does
     // fine by itself
     if ( e.Button == MouseButtons.Right )
     {         
        Point pt = new Point( e.X, e.Y );
        tree.PointToClient( pt );

        TreeNode Node = tree.GetNodeAt( pt );
        if ( Node != null )
        {
           if ( Node.Bounds.Contains( pt ) )
           {
              tree.SelectedNode = Node;
              ResetContextMenu();
              contextMenuTree.Show( tree, pt );
           }
        }
     }
  }
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档