Dan*_*elH 9 treeview treenode click double-click winforms
我有一个Winform应用程序,我在使用TreeView.此应用程序的某些用户遇到的问题是他们必须双击某个节点才能展开它.所以我添加了这段代码,使用单击来展开节点:
Private Sub MyTreeView_NodeMouseClick(sender As System.Object,
e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles MyTreeView.NodeMouseClick
If e.Node.IsExpanded Then
e.Node.Collapse()
Else
e.Node.Expand()
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
这有效,但我注意到有关点击节点的奇怪行为.我注意到有两个地方有不同的行为.第一个位置是+/-符号,旁边是点(图片中的第一个圆圈),第二个位置是节点的文本(第二个圆圈):

通常,单击第一个位置就足以展开节点,必须在第二个位置双击才能展开节点.然后,当我使用我的代码时,单击第二个位置就足以扩展节点,但是当我单击第一个位置时,节点将展开并折叠.
为什么用户必须在第二个位置再次点击两次才能展开节点?如何通过单击两个位置来扩展节点?感谢你们!
加/减仍然被认为是节点的一部分 - 当用户点击它时,你的代码切换扩展,但框架继续并做同样的事情.
添加到您的代码中不对加号/减号执行操作:
private static void TreeView_OnNodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
var hitTest = e.Node.TreeView.HitTest(e.Location);
if (hitTest.Location == TreeViewHitTestLocations.PlusMinus)
return;
if (e.Node.IsExpanded)
e.Node.Collapse();
else
e.Node.Expand();
}
Run Code Online (Sandbox Code Playgroud)