避免 C# TreeView NodeMouseDoubleClick 双击事件的节点错位的错误行为

Posted nanqinling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了避免 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 双击事件的节点错位的错误行为的主要内容,如果未能解决你的问题,请参考以下文章

C# treeview 使用笔记

C#里treeview如何向指定NAME节点添加子节点?

C# winform treeview

wpf中的treeview如何增加2级节点?在C#中如何添加?

c#、winform、treeview 部分节点加图片

C# treeview 获得选中值