避免 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事件来监听连续点击次数,每次点击都布置一个间隔时间的延时任务,延时任务执行时判断间隔内是否还有点击,如果没有则发布点击次数,重置计数. 实现代码如下: ...
随机推荐
- Go语言冒泡、选择、插入、快速排序实战浅析
Hello,各位小伙伴大家好,我是小栈君,今天为大家带来的分享是关于go语言中的排序实战浅析. 我们就实际操作关于go的冒泡排序.选择排序.插入排序和快速排序四种方式的理论和实战进行分享,希望能够为大 ...
- python内存-fromkeys
fromkeys 这个方法涉及到可变不可变类型,记录下测试代码 不可变类型 #可变类型-list x=["zx","zx2","zx3"] ...
- C语言|博客作业10
问题 回答 C语言 博客作业10 这个作业要求在哪里 作业要求 我在这个课程的目标是 熟练循环语句的用法 这个作业在哪个具体方面帮助我实现目标 pta作业 参考文献 <C语言程序设计> 1 ...
- 为NLog自定义LayoutRenderer
长话短说 前文<解剖HttpClientFactory,自由扩展HttpMessageHandler>主要想讲如何扩展HttpMessageHandler, 示例为在每个Http请求中的 ...
- 揉碎HTTP编码过程,从此不乱码
老生常谈之HTTP乱码问题 最后的结论? 对于get请求 在Servlet中调用request.setCharacterEncoding()设置编码是没有意义的不管你使用任何编码方式对于你的数据解码没 ...
- 2019-2020-1 20199304《Linux内核原理与分析》第五周作业
第四章 系统调用的三层机制(上) 4.1 用户态.内核态和中断 知识点总结: 与系统调用打交道的方式是通过库函数的方式. 用户态与内核态的区分 内核态:高的执行级别下,代码可以执行特权指令,访问任意的 ...
- 八分音符(频率)卷积算子 Octave Convolution
为什么读此系列文章? 优化数学和计算理论帮助机器学习完成问题分类: 1)按照领域划分,比如计算机视觉,自然语言处理,统计分析预测形: 2)按照算法复杂划分,比如是否是NP-Hard问题,是否需要精确解 ...
- 关于非阻塞I/O、多路复用、epoll的杂谈
本文主要是想解答一下这样几个问题: - 什么是非阻塞I/O - 非阻塞I/O和异步I/O的区别 - epoll的工作原理 文件描述符 文件描述符在本文有多次出现,难免有的朋友不太熟悉,有必要简单说明一 ...
- Android多线程之(一)——View.post()篇
前言 提起View.post(),相信不少童鞋一点都不陌生,它用得最多的有两个功能,使用简便而且实用: 1)在子线程中更新UI.从子线程中切换到主线程更新UI,不需要额外new一个Handler实例来 ...
- shell 循环读取文件及字符串转为数组
文件/etc/hdocker_config内容如下: 30.72.63.94 30.72.63.95 30.72.63.96 30.72.63.97 /tmp/lasclocker.tar maste ...