c# treeView 取消选择事件
需求:选择树的节点时,会触发某些事件。但是部分节点的处理比较特殊,不能选择。另外,前台选择的节点尽量不要跳来跳去。
几个知识点:
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(); }
转载请注明出处:http://www.cnblogs.com/icyJ/
分类:
开发 - .NET/C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)