如何扩展Treeview的第一级孩子

时间:2011-12-27 19:58:13

标签: c# treeview

我希望默认情况下在树视图中显示第一级的所有孩子。 然后通过点击扩展所有孩子。

6 个答案:

答案 0 :(得分:12)

尝试:

foreach (TreeNode tn in treeView1.Nodes) {
  tn.Expand();
}

在运行时添加节点时,只需检查级别并展开(如果需要):

private void ShoudAutoExpand(TreeNode tn) {
  if (tn.Level == 0)
    tn.Expand();
}

没有NodeAdded事件可以挂钩以自动检查。您必须自己确定是否应该“默认”扩展节点。

<强>更新

从您的评论中,您似乎希望展开所有0级节点,但在展开时展开级别1的所有子节点。

尝试使用以下代码订阅BeforeExpand事件:

private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) {
  treeView1.BeforeExpand -= treeView1_BeforeExpand;
  if (e.Node.Level == 1) {
    e.Node.ExpandAll();
  }
  treeView1.BeforeExpand += treeView1_BeforeExpand;
}

答案 1 :(得分:1)

您可以尝试这样的事情..您必须更改示例以适合您自己的代码,因为您忽略了粘贴您拥有或尝试过的任何代码

private void addChildNode_Click(object sender, EventArgs e) 
{
  var childNode = textBox1.Text.Trim();
  if (!string.IsNullOrEmpty(childNode)) {
    TreeNode parentNode = treeView2.SelectedNode ?? treeView2.Nodes[0];
    if (parentNode != null) {
      parentNode.Nodes.Add(childNode);
      treeView2.ExpandAll();
    }
  }
}

答案 2 :(得分:1)

如果你想要一个递归,试试这个:

void expAll(TreeNode node)
{
   node.Expand();
   foreach(TreeNode i in node.Nodes)
   {
       expAll(i);
   }
}

答案 3 :(得分:1)

private TreeNode ExpandUptoLevel(TreeNode tn,int level)
    {
        if (level != 0)
        {
             level --;
             tn.Nodes[0].Expand();
             return ExpandUptoLevel(tn.FirstNode, level);
        }                               
        return tn;  
     }

答案 4 :(得分:0)

要将树中的所有节点扩展到某个级别,上述代码将无效。只需添加一个检查以读取并将实际节点级别与您希望扩展到的级别进行比较。这是一段代码片段。

    private void ExpandUptoLevel(TreeNode tn, int level)
    {
        if (level >= tn.Level)
        { 
            tn.Expand();
            foreach (TreeNode i in tn.Nodes)
            {
                ExpandUptoLevel(i,level);
            }
        }
    }

答案 5 :(得分:0)

仅打开第一个节点:

for (int i = 0;  i< treeView1.Nodes.Count; i++)
        {
            treeView1.Nodes[i].Expand();
        }