DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能
场景
Winform控件-DevExpress18下载安装注册以及在VS中使用:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243
DevExpress的TreeList怎样设置数据源,从实例入手:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102548490
实现了树形结构后,我们要实现在树形节点上点击右键时弹窗,弹窗确认之后实现将当前节点删除。
注:
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
这里在窗体加载完的事件里绑定Treelist的鼠标点击事件。
this.treeList2.MouseClick += treeList2_MouseClick;
在事件方法中
private void treeList2_MouseClick(object sender, MouseEventArgs e){//获取当前TreeList对象DevExpress.XtraTreeList.TreeList treeList = sender as DevExpress.XtraTreeList.TreeList;if (treeList != null && treeList.Selection.Count == 1){object idValue = null;string strIdValue = String.Empty;DataTreeNode nodeData = null;//通过TreeList的DataSource属性获取所有节点的ListList<DataTreeNode> datasource = treeList.DataSource as List<DataTreeNode>;if (datasource != null){//获取选中节点的集合中第一个的Id属性idValue = treeList.Selection[0].GetValue("Id");strIdValue = idValue.ToString();//获取当前选中节点DataTreeNode对象nodeData = datasource.Where<DataTreeNode>(p => p.Id == strIdValue).FirstOrDefault<DataTreeNode>();if (nodeData != null){//获取或设置是否启用聚焦节点的外观设置 -启用整行选中treeList.OptionsSelection.EnableAppearanceFocusedRow = true; //启用整行选中#region 右键弹出上下文菜单 - 删除待比较的文件//如果点击的是鼠标右键if (e.Button == System.Windows.Forms.MouseButtons.Right){//构建右键菜单System.Windows.Forms.ContextMenu ctxMenu = new System.Windows.Forms.ContextMenu();//构建右键删除菜单项System.Windows.Forms.MenuItem mnuDelete = new System.Windows.Forms.MenuItem();mnuDelete.Text = "删除当前文件";//删除菜单项点击事件订阅mnuDelete.Click += delegate(object s, EventArgs ea){//DevExpress的对话框DialogResult dialogResult = DevExpress.XtraEditors.XtraMessageBox.Show(String.Format("确定要删除此实验数据吗[{0}]?\r\n删除后无法恢复!", nodeData.Id), "标题",System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question);//如果点击了Yesif (dialogResult == DialogResult.Yes){try{string fileName = String.Empty;#region 删除对应的树节点//通过设置主键ID找到节点nodeDevExpress.XtraTreeList.Nodes.TreeListNode selectedNode = treeList.FindNodeByKeyID(nodeData.Id);if (selectedNode != null){//删除节点this.treeList2.Nodes.Remove(selectedNode);}#endregion//禁用整行选中treeList.OptionsSelection.EnableAppearanceFocusedRow = false; }catch (Exception ex){ICSharpCode.Core.LoggingService<DataTreeListHelper>.Error("删除实验数据异常:" + ex.Message, ex);DevExpress.XtraEditors.XtraMessageBox.Show("删除实验数据异常:" + ex.Message, "标题", MessageBoxButtons.OK, MessageBoxIcon.Error);}}};ctxMenu.MenuItems.Add(mnuDelete);ctxMenu.Show(treeList, new System.Drawing.Point(e.X, e.Y));}#endregionreturn;}}treeList.OptionsSelection.EnableAppearanceFocusedRow = false; //禁用整行选中}}
具体注释见代码。
DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能相关推荐
- Windows10添加自定义右键菜单(详细步骤)
Windows10添加自定义右键菜单 文章目录: 1.打开注册表 2.找到shell,然后新建 `项` 3.添加值 4.效果展示 5.把cmd也添加到菜单栏中 有时我们装了编辑类软件,但是我们不想每次 ...
- 实现在GEF中被选中图形上的右键菜单
要实现在GEF中被选中图形上的右键菜单,每个action完成如下三项工作: 1. action类定义,一般情况的action都会在选中图形后操作,所以,一般都会继承自org.eclipse.gef. ...
- python右键弹出菜单编写_python实现应用程序在右键菜单中添加打开方式功能
最近项目组开发的一个小工具想要在右键菜单中添加打开方式,以有道云笔记为例进行了需求拆解和代码编写 1.需求拆解: 如何实现手动添加右键菜单的打开方式: Step1:打开注册表编辑器,Win+R-> ...
- win10添加自定义右键菜单
如果你想实现在文件上点击右键,选择右键快捷方式里一个软件来打开它,但是右键菜单里没有这个软件的快捷方式(比如免安装版的UltraEdit),这时候怎么办呢? 请看下文 下面以添加UltraEdit到右 ...
- Qt:QListWidget的item上实现右键菜单
关于右键菜单的实现,可以参考另一篇我转载的文章,在QT中添加右键菜单. 问题:如何实现在一个列表中点击右键,如果在Item上面,则有"修改"选项,在其余空白处,则只有"添 ...
- 给win8、win10系统添加自定义右键菜单项目
首先我们打开注册表,按下键盘上win+R组合键打开运行,输入regedit,然后回车即可打开注册表了. 然后我们定位到HKEY_CLASSES_ROOT\Directory\background\sh ...
- Duilib中为RichEdit\Edit控件添加自定义右键菜单
前言 Duilib中的RichEdit控件在使用中发现,基本上对复制.粘贴.剪切等快捷方式都是支持的,不过唯一缺点是没有右键菜单,感觉不够好,于是就想着加上右键菜单. 右键菜单基本思路是,在RichE ...
- 如何卸载ultraedit_UltraEdit_右键菜单注册及删除
添加至右键菜单: 有些版本的 UltraEdit 安装好之后,缺少一个比较方便的功能:无法选择某个文本文件 用右键选择 UltraEdit 打开.仔细查看注册表,发现把下面内容加入注册表即可: 创建 ...
- win10 右键菜单onedrive 彻底删除办法
最初手动删除注册表方法: Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\ ...
最新文章
- 文字链接_新生命道目录及音频、文字链接(20200501更新)
- gtk+-hello,world
- 相机视场角和焦距_按照工业镜头的视场的分类
- 数据库-优化-从慢查询日志中分析索引使用情况及pt-find
- MySql轻松入门系列——第一站 从源码角度轻松认识mysql整体框架图
- Axis2;wsdl生成客户端和serverJava代码
- 地推不同HTTP协议解决的问题
- 微型计算机原理及应用程序题,微型计算机原理及应用试题及答案
- 2000坐标系转经纬度工具_【Leaflet开发】L.CRS + 搞定Leaflet多坐标系拓展
- Gram matrix(格拉姆矩阵)
- Microsoft Caffe(msCaffe)无GPU快速配置
- 2019年消防工程师综合必看考点:建筑分类、高度、层数
- WAS中间件服务器简介
- 华为认证、华三认证、思科认证考哪个好?
- Minimax算法——井字棋
- 应用安全系列之三十:任意重定向
- DREA:基于多样性排序的多目标优化进化算法
- 犹他大学支付45万美元赎金以阻止被盗数据泄露
- Fractions to Decimals
- android 判断安装微信,Android开发中判断手机是否安装了QQ或者微信
热门文章
- 【String类、static、Arrays类、Math类】
- 数据库服务器管理系统,数据库管理系统服务器
- win10 2004 最新版图文安装流程
- java 安卓基础面试题_android-------Java 常问的基础面试题
- jstl java_JSTL-Java-Baby-51CTO博客
- a++浏览器_走进浏览器内部—剖析浏览器是如何工作的(上)
- etcdctl命令查询etcd信息
- android drawableleft 垂直居中,Android TextView前加图标垂直居中第一行(仿大众点评购买须知/提示语)...
- php dingo和jwt,Laravel实现dingo+JWT api接口之配置篇
- c# 微服务学习_关于使用“江西微就业”服务平台学习掌握就业创业帮扶政策的通知...