博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# treeView 取消选择事件
阅读量:5276 次
发布时间:2019-06-14

本文共 1116 字,大约阅读时间需要 3 分钟。

需求:选择树的节点时,会触发某些事件。但是部分节点的处理比较特殊,不能选择。另外,前台选择的节点尽量不要跳来跳去。

几个知识点:

treeView.BeforeSelect事件,可以取消选择。

TreeViewCancelEventArgs e,e包含有属性Action、Node、Cancel。可以根据Action来判断BeforeSelect事件是由什么操作触发的。同样,Node获取当前的节点,通过Node的属性值也可以判断是否继续往下执行。属性Cancel为true时,不会继续往下执行。(注:至少不会出发AfterSelect事件)

e.Action,是一个枚举。有五个值:Collapse、Expand、Unknown、ByKeyboard、ByMouse。稍微理解一下,可以知道Collapse是折叠节点时的状态,Expand对应展开节点操作,ByKeyboard对应键盘选择操作,ByMouse对应鼠标选择操作,至于Unknown,不全是但包含treeView.SelectedNode = tn;对TreeView的SelectedNode属性赋值时的状态。

应用实例:当节点展开、折叠,以及节点为第一级的节点(也就是没有父节点)的情况下,取消选择事件;而对SelectedNode赋值的情况,不取消事件,但是也不执行BeforeSelect事件中的其他代码。

代码如下:

//切换节点void treeAll_BeforeSelect(object sender, TreeViewCancelEventArgs e){    var tn = e.Node;    //一层节点,展开,收缩等操作都不响应。    if (tn.Parent == null        || e.Action == TreeViewAction.Collapse        || e.Action == TreeViewAction.Expand)    {        e.Cancel = true;        return;    }    //未知操作执行选择,但不执行下面的act    if (e.Action == TreeViewAction.Unknown)        return;    Action act = () =>    {        //DoSomething    };    if (true) act();}

转载请注明出处:

转载于:https://www.cnblogs.com/icyJ/archive/2013/05/09/beforeselect.html

你可能感兴趣的文章
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>