展开 Windows Forms TreeView 中的节点而不选定它

4
当我点击加号展开TreeView节点时,该节点会被选中。我该如何避免这种情况?我希望能够展开节点而不更改所选节点(例如在RegEdit.exe中),只有当单击节点文本时才更改选择。
(请原谅我似乎是一个基础问题 - 我确实搜索了一下,但没有找到答案。欢迎任何指针或链接。)

当您单击加号时选择节点并不是正常行为。"right to it" 是什么意思? - Hans Passant
这意味着“留给它”,抱歉。 - Uros Calakovic
如果这不是正常行为,那么我一定是通过更改TreeView的属性从设计师那里启用了它。我已经尝试禁用它,但找不到哪个属性会影响它。 - Uros Calakovic
是的,这是一个PEBCAC的糟糕案例 - 我在AfterExpand事件中自己完成了它。正如Hans所说,这不是默认行为。我应该发表跟进,但我完全忘记了这个帖子。很抱歉造成了混淆。 - Uros Calakovic
2个回答

1

我相信你可以利用BeforeSelect事件,如果所选节点有子节点,则应该允许你取消节点选择。

private void MyTreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
 If (nodeWithChildren) e.Cancel = True
}

0

这个有点晚了。

你可以使用命中测试。

    private void myTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {

        TreeViewHitTestInfo info = myTreeView.HitTest(e.Location);

        if (info.Location == TreeViewHitTestLocations.Label)
        {
            TreeNode node = myTreeView.GetNodeAt(e.Location);

            //do something
        }
    }

只有在单击标签时,才会选择该节点。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接