Winforms 树视图节点单击行为
我有一个使用TreeView的Winform应用程序。此应用程序的某些用户存在一个问题,即他们必须双击某个节点才能将其展开。因此,我添加了以下代码以使用单击展开节点:Winforms 树视图节点单击行为,winforms,click,treeview,double-click,treenode,Winforms,Click,Treeview,Double Click,Treenode,我有一个使用TreeView的Winform应用程序。此应用程序的某些用户存在一个问题,即他们必须双击某个节点才能将其展开。因此,我添加了以下代码以使用单击展开节点: Private Sub MyTreeView_NodeMouseClick(sender As System.Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles MyTreeView.NodeMouseClick If
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
这是可行的,但我注意到关于点击节点的奇怪行为。我注意到有两个地方有不同的行为。第一个位置是+/-符号和旁边的点(图片中的第一个圆),第二个位置是节点的文本(第二个圆):
通常,单击第一个位置就足以展开节点,双击第二个位置就可以展开节点。然后,当我使用代码时,单击第二个位置就足以展开节点,但当我单击第一个位置时,节点将展开并折叠
为什么用户必须在第二个位置再单击两次才能展开节点?我可以通过单击两个位置来展开节点吗?谢谢你们 加号/减号仍然被认为是节点的一部分-当用户单击它时,代码切换扩展,但框架继续并执行相同的操作 添加到代码中,使其不作用于加号/减号:
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();
}
我的计划是检查x,y坐标,并计算坐标是属于+/-还是属于节点文本。我不知道HitTest方法和TreeView测试位置。非常感谢。