场景

DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102551175

在上面已经实现自定义右键菜单删除树节点,这里要实现自定义右键菜单实现

右键功能自定义,比如打开文件选择框。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先绑定treelist的鼠标单击事件

treeList.MouseClick -= treeList_MouseClick;
treeList.MouseClick += treeList_MouseClick;

然后在绑定的单击事件中

获取treelist,然后获取其数据源并转换为对象List,然后是相关的业务判断。

然后如果是鼠标右键的话,新增右键菜单项。

private static void treeList_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
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;
List<DataTreeNode> datasource = treeList.DataSource as List<DataTreeNode>;
if (datasource != null)
{
idValue = treeList.Selection[].GetValue("Id");
strIdValue = idValue.ToString();
nodeData = datasource.Where<DataTreeNode>(p => p.Id == strIdValue).FirstOrDefault<DataTreeNode>();
if (nodeData != null)
{
if (nodeData.NodeType == DataTreeNodeTypes.File)
{
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) {
DialogResult dialogResult = DevExpress.XtraEditors.XtraMessageBox.Show(String.Format("确定要删除此实验数据吗[{0}]?\r\n删 除后无法恢复!", nodeData.Id), "霸道标题", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialogResult == DialogResult.Yes)
{
try
{
string fileName = String.Empty; #region 删除对应的树节点 DevExpress.XtraTreeList.Nodes.TreeListNode selectedNode = treeList.FindNodeByKeyID(nodeData.Id);
if (selectedNode != null)
{
selectedNode.ParentNode.Nodes.Remove(selectedNode);
} #endregion treeList.OptionsSelection.EnableAppearanceFocusedRow = false; //禁用整行选中
}
catch(Exception ex)
{ DevExpress.XtraEditors.XtraMessageBox.Show("删除实验数据异常:" + ex.Message, "霸道标题", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
};
ctxMenu.MenuItems.Add(mnuDelete);
#endregion #region 右键弹出上下文菜单 - 导入配置文件
System.Windows.Forms.MenuItem mnuImport = new System.Windows.Forms.MenuItem();
mnuImport.Text = "导入配置文件";
mnuImport.Click += delegate(object s, EventArgs ea)
{
OpenFileDialog importOpenFileDialog = new OpenFileDialog();
importOpenFileDialog.ShowDialog(); };
ctxMenu.MenuItems.Add(mnuImport); #endregion #region 右键弹出上下文菜单 - 导出配置文件
System.Windows.Forms.MenuItem mnuExport = new System.Windows.Forms.MenuItem();
mnuExport.Text = "导出配置文件";
mnuExport.Click += delegate(object s, EventArgs ea)
{
DialogResult dialogResult = DevExpress.XtraEditors.XtraMessageBox.Show(String.Format("导出[{0}]成功!", nodeData.Id), "标题 ", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question); };
ctxMenu.MenuItems.Add(mnuExport); #endregion ctxMenu.Show(treeList, new System.Drawing.Point(e.X, e.Y));
} return;
}
}
}
treeList.OptionsSelection.EnableAppearanceFocusedRow = false; //禁用整行选中
}
}

效果

点击导入配置文件后

DevExpress的TreeList实现自定义右键菜单打开文件选择对话框的更多相关文章

  1. C#按键打开文件选择对话框,并把选择好的路径保存/显示到textBox

    1.选择文件夹 FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.SelectedPath = "D:";//默认路 ...

  2. AS3.0 自定义右键菜单类

    AS3.0 自定义右键菜单类: /** * 自定义右键菜单类 * 自定义菜单项不得超过15个,每个标题必须至少包含一个可见字符. * 标题字符不能超过100个,并且开头的空白字符会被忽略. * 与任何 ...

  3. 【连载】Bootstrap开发漂亮的前端界面之自定义右键菜单

    连载: 1<教你用Bootstrap开发漂亮的前端界面> 2.<Bootstrap开发漂亮的前端界面之实现原理> 网页中的自定义右键菜单越来越普遍,自定义右键菜单可以增强用户体 ...

  4. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  5. JavaScript自定义右键菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]

    许多从事Web开发的会发现有些事,我们需要禁用浏览器本事自带的右键菜单,而实现自定义的右键菜单下面我们也来实现一个自定义的右键菜单 首先来创建JSP页面 <%@ page language=&q ...

  7. JS简单实现自定义右键菜单

    RT,一个简单的例子,仅仅讲述原理 <div id="menu" style="width: 0;height: 0;background: cadetblue;p ...

  8. antd Tree组件中,自定义右键菜单

    最近项目中,有一个需求是自定义antd的Tree组件的右键菜单功能. 直接上代码 class Demo extends Component { state = { rightClickNodeTree ...

  9. js之自定义右键菜单

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. @Transactional注解失效

    一.特性 先来了解一下@Transactional注解事务的特性吧,可以更好排查问题 1.service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务 ...

  2. 如何在动态链接库dll/so中导出自定义的模板类template class | how to implement a template class with c++ and export in dll/so

    本文首发于个人博客https://kezunlin.me/post/4ec4ae49/,欢迎阅读最新内容! how to implement a template class with c++ and ...

  3. @Import与@ImportResource注解的解读

    前言 在使用Spring-Cloud微服务框架的时候,对于@Import和@ImportResource这两个注解想必大家并不陌生.我们会经常用@Import来导入配置类或者导入一个带有@Compon ...

  4. 【AGC035F】Two Histograms

    Problem Description 你有一个 \(N\) 行.\(M\) 列的.每个格子都填写着 0 的表格.你进行了下面的操作: 对于每一行 \(i\) ,选定自然数 \(r_i\) (\(0\ ...

  5. 一起学Android之Handler

    概述 在Android开发中,有主线程(UI线程)和工作线程(Worker线程)之分,两个线程是相互独立的,并不能相互访问(主线程主要负责UI的更新,不能进行耗时的操作,工作线程主要负责耗时的操作,但 ...

  6. JMeter内存溢出:java.lang.OutOfMemoryError: Java heap space解决方法

    一.问题原因 用JMeter压测,有时候当模拟并发请求较大或者脚本运行时间较长时,JMeter会停止,报OOM(内存溢出)错误. 原因是JMeter是一个纯Java开发的工具,内存由java虚拟机JV ...

  7. vue中使用router打开一个新的窗口

    一个单页应用打开一个新的窗口不是很好控制,比如权限的处理,因为原先的页面不会自动刷新,方法很简单: let routeData = this.$router.resolve({ name: " ...

  8. JS基础语法---作用域链

    从函数嵌套来分析: (层数一般5层内) var num=10; function f1() { var num=20; function f2() { var num=30; function f3( ...

  9. 代码提示—ArcGIS API forJavaScript for JavaScript 编辑器代码提示(支持3.x和4.x)

    我一般用WebStorm来arcgis api for js的代码,因为api中的内容太多,每次写代码都要去官方API网站查询,很不方便,所以决定配置一个代码补全,方便写接口. 通过ArcGIS AP ...

  10. Android开发与Sequoyah的安装问题

    首次接触Android开发,在搭建开发环境时遇到困难,写出来和大家分享分享. 使用的ide为捆绑了adt插件和android sdk的eclipse adt bundle,无需安装android sd ...