如何在C#中从Treeview的选定节点获取下一个直接节点?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C#中从Treeview的选定节点获取下一个直接节点?相关的知识,希望对你有一定的参考价值。

我在C #Windows窗体中有一个TreeView。如果用户选择了一个节点,那么我想要检索下一个节点以及树视图的前一个节点。不要考虑它是兄弟还是其他任何一个。我想要拿起来立即下一个节点,也是前一个节点。请指导我解决这个问题...

看到这张图:

假设用户选择以下情况==>我想要检索此节点

  1. 0 1.样本数据==> 1当多个代理人......
  2. 1当多个代理商... ===> 2第二个主要...
  3. 2第二个主要... ===> 3在这种情况下......
  4. 3在这种情况下.... ===> 4 2.Target设置......

等等.....

怎么弄这个...请帮帮我...

答案

使用e.Node.NextNodee.Node.PreNode作为兄弟节点。

TreeNode.NextNode Property

TreeNode.PrevNode Property

编辑

或者e.Node.NextVisibleNodee.Node.PrevVisibleNode在你的情况下为可见节点。

TreeNode.NextVisibleNode Property

TreeNode.PrevVisibleNode Property

有关其他TreeNode属性,请参阅MSDN:TreeNode Properties

另一答案
TreeView tr = new TreeView();

private void Form1_Load(object sender, EventArgs e)
{
    tr.AfterSelect += new TreeViewEventHandler(tr_AfterSelect);
}

void tr_AfterSelect(object sender, TreeViewEventArgs e)
{
    TreeNode PrevNode = e.Node.PrevNode;
    TreeNode NextNode = e.Node.NextNode;
}

对于这种情况,您可以这样做:

void tr_AfterSelect(object sender, TreeViewEventArgs e)
{

    TreeNode NextNode;

    if (e.Node.Nodes.Count == 0)
    {
        NextNode = e.Node.NextNode;
    }
    else 
    {
        NextNode = e.Node.Nodes[0]; 
    }
}
另一答案

我知道这个问题现在已经有7年了,但是我遇到了同样的问题,所以这是我解决问题的方法:

假设start是TreeNode开始,则“向下”

if (start?.Nodes.Count > 0)
    start = start?.Nodes[0]; //If there are childs, select the first
else if (start?.NextNode != null)
    start = start?.NextNode; //If there is a sibling, select the sibling
else
{
    //In this case, the next node is a sibling of one of the nodes ancestors
    if (start?.Parent?.NextNode != null)
        start = start?.Parent?.NextNode; //the parents sibling is our next node
    else
    {
        //we go the paths along the parents up, until we can go to the next sibling,
        //as long as there exist some parents
        while(start.Level != 0)
        {
            start = start.Parent;
            if (start.NextNode != null)
            {
                start = start.NextNode;
                break;
            }
        }
    }
}

以上是关于如何在C#中从Treeview的选定节点获取下一个直接节点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在TreeView中选中他的节点时,更改节点的背景颜色?

如何清除 TreeView 中选定节点的选择? [关闭]

ASP.NET TreeView 和选择选定的节点

如何在 C# 中从 XML 中删除选定的节点?

怎么给treeview接点增加自定义属性

delphi中的treeview控件如何取到选择节点的索引号?