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

问题描述 投票:0回答:3

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

看到这张图:

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

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

等等.....

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

c# winforms c#-4.0 treeview
3个回答
2
投票

使用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


2
投票
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]; 
    }
}

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;
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.