避免 C# TreeView NodeMouseDoubleClick 双击事件的节点错位的错误行为
避免 C# TreeView NodeMouseDoubleClick 双击事件的节点错位的错误行为
在使用WinForm标准的TreeView控件的过程中,添加了如下类似的节点
parentNode1
---childNode1
---childNode2
parentNode2
---childNode1
---childNode2
当parentNode2收起的时候,双击parentNode2,节点会自动展开,并且 NodeMouseDoubleClick事件会发生响应,在响应NodeMouseDoubleClick事件的时候,参数TreeNodeMouseClickEventArgs e 可能出现混乱,这主要是因为双击父节点的时候,会默认展开或者收起子节点,在展开或者收起子节点的时候,treeview会自动调整节点在字体中的显示位置,如果子节点较多,位置发生了移动,那么e.Node就不能代表双击的实际节点。比如说在我的程序中,双击parentNode2时,e.Node实际上可能是childNode1或者childNode2,因为位置不一样而出现不同的参数。
为了解决这个问题,在实际编程中,应当实际避免使用e.Node,转而使用treeViewInfo.SelectedNode来代替双击的节点。这就比较完美的解决了双击事件行为混乱的问题。下面是实际中我所使用的双击事件的代码。
private void tvwDevicesList_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
return;
}
//使用e.Node会导致节点选择错位,所以使用
TreeNode trNode = tvwDevicesList.SelectedNode;
}
最新文章
- JS利用取余实现toggle多函数
- win8安装SQL Server2008企业版
- Java(类与对象)
- Apache Qpid Python 1.35.0 发布
- Android之网络请求库
- Ubuntu 14.04.3 LTS 配置 DNS Server
- 成为JAVA软件开发工程师要学哪些东西
- 如何解决wamp中apache外部IP访问问题
- (Python3) 连加 连乘 代码
- ORA-12541:TNS:无监听程序 解决办法
- 计蒜客-跳跃游戏二 (简单dp)
- 01.GOF设计模式_概述
- input框中自动展示当前日期 yyyy/mm/dd
- 在Android中实现图片的裁剪
- C#中委托如何使用?(转帖)
- MySQL主从同步和半同步配置
- Ubuntu16.04下Kylin的安装与配置
- MySql阶段案例
- 一个web应用的诞生(4)--数据存储
- Orchard运用 - 为评论启用Gravatar头像