避免 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;

}

最新文章

  1. JS利用取余实现toggle多函数
  2. win8安装SQL Server2008企业版
  3. Java(类与对象)
  4. Apache Qpid Python 1.35.0 发布
  5. Android之网络请求库
  6. Ubuntu 14.04.3 LTS 配置 DNS Server
  7. 成为JAVA软件开发工程师要学哪些东西
  8. 如何解决wamp中apache外部IP访问问题
  9. (Python3) 连加 连乘 代码
  10. ORA-12541:TNS:无监听程序 解决办法
  11. 计蒜客-跳跃游戏二 (简单dp)
  12. 01.GOF设计模式_概述
  13. input框中自动展示当前日期 yyyy/mm/dd
  14. 在Android中实现图片的裁剪
  15. C#中委托如何使用?(转帖)
  16. MySQL主从同步和半同步配置
  17. Ubuntu16.04下Kylin的安装与配置
  18. MySql阶段案例
  19. 一个web应用的诞生(4)--数据存储
  20. Orchard运用 - 为评论启用Gravatar头像

热门文章

  1. LESSON 2-Discrete Source Encoding
  2. 单像空间后方交会(python实现)
  3. System.out.printf使用以及注意点
  4. 原创001 | 搭上SpringBoot自动注入源码分析专车
  5. python中字典数据类型常用操作
  6. hello gulp,使用gulp的第一天。
  7. luogu P4677 山区建小学 |dp
  8. ios instancetype与id区别
  9. 常用的iOS第三方资源
  10. 带你从头到尾捋一遍MySQL索引结构(2)