C# TreeView 右键菜单
方法一:
在winform中,添加一个contextMenuStrip1,设置TreeView的属性ContextMenuStrip为contextMenuStrip1,并为这个contextMenuStrip1添加几个菜单项,点击每个菜单项,实现其click事件,然后添加treeivew的nodemouseclick事件,类似如下代码:
//右键菜单
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button != MouseButtons.Right) return;
if (e.Node.Parent == null || e.Node == null) return;
treeView1.SelectedNode = e.Node;
contextMenuStrip1.Show(tv_Roots, e.X, e.Y);
} void contextMenuStripItem_Click(object sender, EventArgs e)//编辑飞行段
{
}
方法二:不同节点对应不同的右键菜单(摘自http://www.cnblogs.com/imihiroblog/archive/2012/06/02/2531949.html)
private void tvOneRoot_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button != MouseButtons.Right) return;
if (e.Node == null) return; //无节点
if (e.Node.Level == ) return;
int nodeType = GetNodeTypeByGuid(e.Node.Name);
tvOneRoot.SelectedNode = e.Node;
InitcmsOneRout(nodeType);
cmsOneRout.Show(tvOneRoot, e.X, e.Y);
} /// <summary>
/// 初始化cmsOneRoot 从nodetype
/// </summary>
/// <param name="nodetype"></param>
private void InitcmsOneRout(int nodetype)
{
cmsOneRout = new ContextMenuStrip();
if (nodetype == -)
{
ToolStripMenuItem tmiEditRoutStation = new ToolStripMenuItem("编辑飞行站点");
tmiEditRoutStation.Click += new EventHandler(tmiEditRoutStation_Click);
cmsOneRout.Items.Add(tmiEditRoutStation);
ToolStripMenuItem tmiMoveRouteStation = new ToolStripMenuItem("更改位置");
tmiMoveRouteStation.Click += new EventHandler(tmiMoveRouteStation_Click);
cmsOneRout.Items.Add(tmiMoveRouteStation);
ToolStripMenuItem tmiDeleRouteStation = new ToolStripMenuItem("删除飞行站点");
tmiDeleRouteStation.Click += new EventHandler(tmiDeleRouteStation_Click);
cmsOneRout.Items.Add(tmiDeleRouteStation);
}
else if (nodetype == )
{
ToolStripMenuItem tmiEditRout = new ToolStripMenuItem("编辑飞行段属性");
tmiEditRout.Click += new EventHandler(tmiEditRout_Click);
cmsOneRout.Items.Add(tmiEditRout);
ToolStripMenuItem tmiDeleteRout = new ToolStripMenuItem("删除飞行段");
tmiDeleteRout.Click += new EventHandler(tmiDeleteRout_Click);
cmsOneRout.Items.Add(tmiDeleteRout);
}
else if (nodetype == )
{ }
else if (nodetype == )
{ }
else
{ } } void tmiEditRout_Click(object sender, EventArgs e)//编辑飞行段
{
string routId = tvOneRoot.SelectedNode.Name;
RouteParameter rp = GetRouteParaByGuid(routId);
FrmPointProperty frm = new FrmPointProperty(rp, , );
frm.OnRoutInfoUpdated += new FrmPointProperty.DelegateRouteInfoUpdated(frm_OnRoutInfoUpdated);
frm.ShowDialog();
}
C# TreeView 右键菜单的更多相关文章
- WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 菜单M ...
- QStandardItemModel角色控制及QTreeView加入不同的右键菜单
1.概述 QTreeView最长用的一个功能就是作为导航栏,像vs里的项目结构树,word的文档结构图,资源管理器的文档结构,等等都是利用树形结构组织的,在前面已经讲述了Qt中使用标准化项目模型QSt ...
- 【转】WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: 菜单Menu的自定义样式: 右键菜单ContextMenu的自定义样式 ...
- Qt532.【转】Qt创建鼠标右键菜单
ZC:可以通过 设置 (QWebView*)->setContextMenuPolicy(NoContextMenu); 来关闭 QWebView的默认右键菜单 Qt创建鼠标右键菜单_疯华正茂 ...
- 在WPF中弹出右键菜单时判断鼠标是否选中该项
和上篇在WPF的TreeView中实现右键选定一样,这仍然是一个右键菜单的问题: 这个需求是在一个实现剪贴板的功能的时候遇到的:在弹出右键菜单时,如果菜单弹出位置在ListViewItem中时,我 ...
- QT5 QTreeView添加右键菜单
C++ QT5学习--QTreeView控件创建右键菜单 QTreeView是QWidget的子类,我们再改写QTreeView类的时候,注意的是继承关系. 1.TreeView.h class Tr ...
- Bootstrap 树形列表与右键菜单
Bootstrap 树形列表与右键菜单 介绍两个Bootstrap的扩展 Bootstrap Tree View 树形列表 jQuery contextMenu 右键菜单 Demo采用CDN分发,直接 ...
- ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...
- win10 右键菜单添加Git Hash Here
1.通过在"运行"中输入'regedit',打开注册表. 2.找到[HKEY_CLASSES_ROOT\Directory\Background]. 3.在[Background] ...
随机推荐
- lombok的@Accessors注解
@AllArgsConstructor @Data @NoArgsConstructor @Accessors(chain = true) @EqualsAndHashCode public clas ...
- 使用TypeScript创建React Native
⒈初始化 React Native环境 参考https://reactnative.cn/docs/getting-started.html ⒉安装React Native官方的脚手架工具 npm i ...
- 多线程(11) — NIO
Java NIO是new IO的简称,是一种可以替代Java IO的一套新的IO机制.它提供了一套不同于Java标准IO的操作机制,严格来说,NIO与并发并无直接关系,但是使用NIO技术可以大大提高线 ...
- 将oracle关键字作为字段名
对于关键字比如:Level.uid.group等 如果在数据库设计的时候,没有考虑oracle数据库的特殊性时,可能会使用关键字作为字段名,从而在建表的过程中,提示错误:ORA-00904: inva ...
- Manjaro 使用基础
一.pacman/yay 的基础命令 Manjaro 装好后,需要运行的第一条命令: sudo pacman -Syy ## 强制更新包数据 sudo pacman-mirrors --interac ...
- babel编译ts
这里用的是babel7 npx babel src --out-dir lib --extensions ".ts"
- 音视频入门-08-RGB&YUV
* 音视频入门文章目录 * YUV & RGB 相互转换公式 YCbCr 的 Y 与 YUV 中的 Y 含义一致,Cb 和 Cr 与 UV 同样都指色彩,Cb 指蓝色色度,Cr 指红色色度,在 ...
- oracle 根据时间字段查询
oracle 根据时间字段查询数据 ROWNUM 是对前面查询的记录做限制,比如查询的记录 > 2000 条,那么只取前面的 2000 条 ''' SELECT * FROM (SELECT C ...
- Python初识对象
一 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, ...
- 我们为什么要用redis
Redis的5要点: 1.为什么要选择Redis:介绍Redis的使用场景与使用Redis的原因: 2.Redis常用命令总结:包括时间复杂度总结与具体数据类型在Redis内部使用的数据结构: 3.R ...