首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TreeNode右键单击选项

TreeNode右键单击选项
EN

Stack Overflow用户
提问于 2009-09-18 13:16:36
回答 2查看 13.3K关注 0票数 5

我在我的C#图形用户界面应用程序中使用TreeView和TreeView.Nodes,并希望在树中的几个节点上使用右键单击功能。我已经搜索了很多,但似乎SelectedNode只对左键单击有效,没有任何东西可以捕获节点上的右键单击。我想要添加功能,如“添加”,“删除”,“重命名”等,当右击节点。有什么建议吗?

谢谢,Viren

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-18 13:27:17

为MouseUp添加一个处理程序。在处理程序中,检查参数中是否有鼠标右键,如果没有,则返回。使用鼠标坐标调用treeView.GetNodeAt()以查找节点。创建上下文菜单。

下面是适用于TreeView的list控件的类似内容:

代码语言:javascript
复制
        private void listJobs_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                int index = listJobs.IndexFromPoint(e.Location);
                if (index != ListBox.NoMatches)
                {
                    listJobs.SelectedIndex = index;

                    Job job = (Job)listJobs.Items[index];

                    ContextMenu cm = new ContextMenu();


                    AddMenuItem(cm, "Run", QueueForRun, job).Enabled = !job.Pending;
                    AddMenuItem(cm, "Cancel run", CancelQueueForRun, job).Enabled = (job.State == JobState.Pending || job.State == JobState.Running);
                    AddMenuItem(cm, "Open folder", OpenFolder, job);

                    cm.Show(listJobs, e.Location);
                }
            }
        }

        private MenuItem AddMenuItem(ContextMenu cm, string text, EventHandler handler,     object context)
        {
            MenuItem item = new MenuItem(text, handler);
            item.Tag = context;
            cm.MenuItems.Add(item);
            return item;
        }

您可能需要在表单上使用PointToClient或PointToScreen来适当地转换坐标。当上下文菜单出现在错误的位置时,您很快就会意识到是否需要它们。

票数 7
EN

Stack Overflow用户

发布于 2009-09-18 13:25:25

使用TreeView上的ContextMenuStrip属性添加上下文菜单。如果您不需要显示某些节点的菜单,您可以处理ContextMenuStrip的打开事件来取消它的显示--或者,您也可以从那里禁用菜单的一些选项。

编辑:要获取鼠标下的节点,请处理TreeView上的MouseUp事件,并使用以下代码:

代码语言:javascript
复制
TreeNode nodeUnderMouse = tvMyTreeView.GetNodeAt(e.X, e.Y);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1444492

复制
相关文章

相似问题

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