避免 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;
}
避免 C# TreeView NodeMouseDoubleClick 双击事件的节点错位的错误行为的更多相关文章
- 在TreeView 控件上,如果双击任何一个节点的checkbox 只会收到一次After_Check事件 但是check属性变化两次(从false到true 再从true到false),请问该如何解决,谢谢!
在TreeView 控件上,如果双击任何一个节点的checkbox 只会收到一次After_Check事件 但是check属性变化两次(从false到true 再从true到false),请问该如何解 ...
- C#treeView控件单击事件选中节点滞后问题解决方法
问题描述:在treeView的Click事件中,选中的节点SelectedNode并不是您刚才点击的节点,总是上一次选中的节点,节点选中滞后的问题. 解决方案:在treeView的MouseDown事 ...
- Treeview控件的Node节点延迟加载
Treeview控件是一个很常用的控件,用于展示资源或者组织结构的时候很方便,通常会在系统启动时进行资源的加载和节点目录的初始化,但在资源较多和层级较深的情况下,所有节点加载出来会耗费太多时间,影响体 ...
- bootstrap-treeview 自定义实现双击事件
bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结 ...
- 关于TreeView的选中事件
在使用TreeView的选中事件时,发现,SelectAfter在第一次选中时触发,你再次点击时这个事件并不能引发它.所以找了找,发现有另两种解决办法. 最好的就是使用:NodeMouseClick, ...
- 给C#的treeview控件的部分节点添加checkbox
一.先初始化treeview this.treeView1.CheckBoxes = true; this.treeView1.ShowLines = false; this.treeView1.Dr ...
- 【WPF】图片按钮的单击与双击事件
需求:ListBox中的Item是按钮图片,要求单击和双击时触发不同的事件. XAML中需要引入System.Windows.Interactivity.dll xmlns:i="clr-n ...
- GridView/DataGrid行单击和双击事件实现代码_.Net教程
功能: 单击选中行,双击打开详细页面 说明:单击事件(onclick)使用了 setTimeout 延迟,根据实际需要修改延迟时间 ;当双击时,通过全局变量 dbl_click 来取消单击事件的响应 ...
- Android实现双击事件的两种方式
Work around的方法是先监听onTouch事件来监听连续点击次数,每次点击都布置一个间隔时间的延时任务,延时任务执行时判断间隔内是否还有点击,如果没有则发布点击次数,重置计数. 实现代码如下: ...
随机推荐
- 原生线程池这么强大,Tomcat 为何还需扩展线程池?
前言 Tomcat/Jetty 是目前比较流行的 Web 容器,两者接受请求之后都会转交给线程池处理,这样可以有效提高处理的能力与并发度.JDK 提高完整线程池实现,但是 Tomcat/Jetty 都 ...
- mybatis的@Options的使用
1.问题: 我采用的是mybatis的注解方式,打算插入一条数据之后返回主键,但是试了好几次都是返回的影响的记录数:1, @Insert(****) @Options(useGeneratedKeys ...
- scrapy框架安装配置
scrapy框架 scrapy安装(win) 1.pip insatll wheel 2.下载合适的版本的twisted:http://www.lfd.uci.edu/~gohlke/pythonli ...
- VMware中linux虚拟机的安装
打开安装的VMware 15,点击新建虚拟机 2.选择典型即可,点击下一步 3.选择“稍后安装操作系统”,点击下一步 4.选择想安的版本,点击下一步 5.设置虚拟机名称及安装位置(路径必须全英文!) ...
- jQuery九宫格抽奖
<div id="box"> <div class="content content-1">1</div> <div ...
- Netty学习——Google Protobuf使用方式分析和环境搭建
Google Protobuf使用方式分析 在RPC框架中,Google Protobuf是很常用的一个库,和Apache Thrift 是同款的用于进行序列化的第三方库.原理都是大同小异,无非就是使 ...
- Hadoop原生搭建
版本:(centos7.6) 在开始搭建平台前我已经预装了MySQL ps:MySQL创建用户并授权: grant all privileges on *.* to ' with grant opti ...
- CSS自定义默认样式
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, ...
- NIO-Channel
目录 NIO-Channel 目录 前言 什么是Channel 通道类型 如何使用 ServerSocketChannel SocketChannel FileChannel 总结 相关文献 NIO- ...
- Git与GitHub 学习笔记
以下信息来源于网络资料,并进行整理与精简 Git是目前世界上最先进的分布式版本控制系统,和svn,vss等一样都是进行版本控制的. GitHub是一个软件项目的托管平台,相当于自己建立的 svn服务器 ...