场景

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. Linux平台 Oracle 19c RAC安装Part3:DB配置

    Linux平台 Oracle 19c RAC安装Part3:DB配置 四.DB(Database)配置 4.1 解压DB的安装包 4.2 DB软件配置 4.3 ASMCA创建磁盘组 4.4 DBCA建 ...

  2. WebShell代码分析溯源(三)

    WebShell代码分析溯源(三) 一.一句话变形马样本 <?php $g = array('','s');$gg = a.$g[1].ser.chr('116');@$gg($_POST[ge ...

  3. PlayJava Day014

    今日所学: /* 2019.08.19开始学习,此为补档. */ 1.Random生成的随机数是伪随机数,因为只要两个Random对象的种子相同,而且方法的调用顺序也相同,则产生的随机数相同. Ran ...

  4. RandomAccessFile()实现用户注册功能, 新增,查询,更新

    package seday03.raf;import java.io.IOException;import java.io.RandomAccessFile;import java.util.Arra ...

  5. 怎样使用element-starter快速搭建ElementUI项目

    场景 为了能快速搭建起一个ElementUI项目,我们可以使用element-starter这个模板进行快速搭建. element-starter的Github https://github.com/ ...

  6. HTML空元素

    什么是空元素? 首先空元素下是没有子级节点和内容的.然后空元素是在开始标签中关闭的,也就是说空元素没有闭合标签的. 在HTML中的空元素有以下几个: <area> <base> ...

  7. JS基础研语法---函数基础总结---定义、作用、参数、返回值、arguments伪数组、作用域、预解析

    函数: 把一些重复的代码封装在一个地方,在需要的时候直接调用这个地方的代码就可以了 函数作用: 代码重用 函数的参数: 形参:函数定义的时候,函数名字后面的小括号里的变量 实参:函数调用的时候,函数名 ...

  8. 【C#】学习笔记 abstract、virtual、interface使用的一些栗子

  9. View和ViewGroup

    1.继承关系 2.组合关系 3.View 的绘制流程 3.1.创建R.attrs.styleable,申明需要用到的属性值,在使用时可以根据属性进行定义   3.2.extends View  ,依次 ...

  10. [20191115]oracle实例占用内存计算.txt

    [20191115]oracle实例占用内存计算.txt --//以前学习oracle数据库时,总想了解实例占用内存多少,我曾经在一些会议底下问过一位高手,对方说计算这个相对很难,许多东西是共享的.- ...