取消选中的节点一直处于选中状态

本文关键字:于选中 状态 一直 节点 取消 | 更新日期: 2023-09-27 18:14:20

我已经为我的TreeView控件创建了一个自定义处理程序:

public class TreeViewOnlyLeavesSelectable : TreeView
{
    protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
    {
        //base.OnNodeMouseClick(e);
        if (e.Node.Nodes.Count == 0)
        {
            this.SelectedNode = null;
            this.Refresh();
            return;
        }
    }
}

问题是,它仍然选择非叶节点。我对它进行了调试,它正确地执行了if语句,但是在应用程序中节点仍然被选中。我做错了什么?

取消选中的节点一直处于选中状态

根据您的代码(e.Node.Nodes.Count == 0),您只希望非叶子节点是可选择的。

根据你的描述("它仍然选择非叶节点"),你只希望叶节点是可选择的。

除此之外,考虑重写OnAfterSelect。当使用键盘而不是鼠标时也是如此。

下面的代码只允许叶子节点是可选择的。

protected override void OnAfterSelect(TreeViewEventArgs e)
{
    base.OnAfterSelect(e);
    if (e.Node.Nodes.Count != 0)
    {
        this.SelectedNode = null;
    }
}