场景

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 == )
{
object idValue = null;
string strIdValue = String.Empty;
DataTreeNode nodeData = null;
//通过TreeList的DataSource属性获取所有节点的List
List<DataTreeNode> datasource = treeList.DataSource as List<DataTreeNode>;
if (datasource != null)
{
//获取选中节点的集合中第一个的Id属性
idValue = treeList.Selection[].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);
//如果点击了Yes
if (dialogResult == DialogResult.Yes)
{
try
{
string fileName = String.Empty; #region 删除对应的树节点
//通过设置主键ID找到节点node
DevExpress.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));
}
#endregion
return;
}
}
treeList.OptionsSelection.EnableAppearanceFocusedRow = false; //禁用整行选中
}
}

具体注释见代码。

DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能的更多相关文章

  1. DevExpress使用教程:XtraGridControl动态添加右键菜单

    在使用 GridControl 的时候经常需要添加右键菜单.一般的做法是自己创建菜单项,然后注册GridView的Mouse-Click事件,然后Show出定义好的菜单.但是涉及到一些单击事件会收到编 ...

  2. Ztree右键事件,如何让指定的子节点不显示右键菜单。

    这里我记录一下我自己的解决方案: 1.首先在Ztree的setting设置中加一个鼠标右键回调函数onRightClick,然后在加一个beforeRightClick(具体含义可以看官方API) v ...

  3. 将neo4j的一个节点上的关系移动到另一个节点上

    将neo4j中一个节点的全部关系移动到另一个节点上面,采用先建立新关系,之后删除原先的关系的方式 def move_relations(source_node_id,target_node_id,gr ...

  4. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(六) 之 Layim源码改造右键菜单--好友、组管理功能的实现。

    前言 上一篇中讲解了加好友的流程,本篇将介绍好友管理,群组管理的右键菜单功能.当然由于菜单项目太多,都实现也得花费时间.只讲解一下我是如何从不知道怎么实现右键菜单到会自定义菜单的一个过程.另外呢,针对 ...

  5. JQuery_DOM 节点操作之复制、替换和 删除节点

    一.复制节点 <script type="text/javascript" src="jquery-1.12.3.min.js"></scri ...

  6. DevExpress中GridView上的右键菜单

    1. 先拖一个PopupMenu和BarManage控件,设置PopupMenu的Manager属性为BarManager. 2. 先选中GridView,不是GridControl,在属性窗口中,选 ...

  7. 技巧:开启ubuntu系统桌面上的右键进入terminal命令行控制台功能

    $ sudo apt-get install nautilus-open-terminal 执行上述命令,重启. 重启命令: $ sudo reboot 注意:需要联网

  8. DevExpress的TreeList实现自定义右键菜单打开文件选择对话框

    场景 DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...

  9. 在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件

    DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件,它和我们传统Winform的TreeView控件使用上有所不同,我一 ...

随机推荐

  1. SPA项目开发之CRUD+表单验证

    表单验证 Form组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则, 并将Form-Item的prop属性设置为需校验的字段名即可 <el-form-item label ...

  2. 敏捷软件开发_实例1<二>

    敏捷软件开发_实例1 这本书的实例非常好,给了我非常多的启发.主要讲了两个实例,咖啡机和薪水支付实例,咖啡机实例比较简单并没有用什么设计模式,薪水支付实例用了很多设计模式,包括后面的打包等. 咖啡机实 ...

  3. bower私服部署

    目录 bower私服部署 简介 工具清单 安装 安装nodejs 安装git 安装private-bower 配置private-bower 启动private-bower 开放端口 开机启动/注册为 ...

  4. Android Studio当中的创建新方法的快捷键该如何使用?

    当有红线出现的时候,我们的代码并没有编译出错,则需要输入alt+enter则可以得到相应的神奇效果了.这个方法我竟然今天才知道,也真是丢脸了.比如说我们书写了一个新的没有创建的方法,我们直接输入alt ...

  5. 码云 git 常用命令

    git 常用命令: git init 创建一个本地文件 ①git add . 当前文件夹下的所有内容 添加到暂存区 git add test.txt 指定文件夹添加 可以添压缩文件 ②git comm ...

  6. Linux—系统关机命令详解

    不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中.将数据由内存同步写入到硬盘中. [root@localhost ~]# sync 一.shutdown命令 # 立刻关 ...

  7. 苹果手机Chrome浏览器显示input:disabled时字体颜色总是为浅灰色

    今天被测试人员提了个bug:苹果手机浏览器(Chrome)打开h5,控件在input:disabled的样式始终是浅灰色,要求改成黑色.测试对比:1.在多个pc浏览器上浏览input:disabled ...

  8. ACM-后序遍历(简单方法和正规方法)

    1.后序遍历简单方法 /**二叉树遍历一般有三种方法:前序,中序,后序.*其中前序遍历u顺序为:根->左子树->右子树,在此定义一种新的遍历方法:根->右子树->左子u树*使用 ...

  9. Spring熔断

    Hystrix不再维护,使用Resilience4j来代替.

  10. [C3W2] Structuring Machine Learning Projects - ML Strategy 2

    第二周:机器学习策略(2)(ML Strategy(2)) 误差分析(Carrying out error analysis) 你好,欢迎回来,如果你希望让学习算法能够胜任人类能做的任务,但你的学习算 ...