如何确保所选节点的子树视图可见?

时间:2016-05-15 13:45:43

标签: c# treeview

我有一个扩展的树视图。如果我键入第一个字符以快速访问某个节点,则所选节点将显示在树视图框架的底部,但其自己的子树视图不可见。如何确保所选节点的整个子树视图可见?

现在:

|_a
|_[b]
=============treeview's frame bottom margin

预期结果:

|_a
|_[b]
  |_1
  |_2
  | |_k
  |_3
=============

1 个答案:

答案 0 :(得分:0)

这应该保持所选节点的最后一个子节点在视图中:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
    treeView1.SelectedNode.Expand();
    treeView1.SelectedNode.LastNode.EnsureVisible();
}

要查找最后一个孩子的最后一个孩子等,您可以写一个递归 LastChildNode函数:

TreeNode LastChildNode(TreeNode node)
{
    if (node.Nodes.Count > 0) return LastChildNode(node.LastNode);
    else return node;
}

要使用它,您可以将AfterSelect代码更改为:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
    TreeNode lastChild = LastChildNode(treeView1.SelectedNode.LastNode);
    if (lastChild != null) lastChild.EnsureVisible();
}