我有一个扩展的树视图。如果我键入第一个字符以快速访问某个节点,则所选节点将显示在树视图框架的底部,但其自己的子树视图不可见。如何确保所选节点的整个子树视图可见?
现在:
|_a
|_[b]
=============treeview's frame bottom margin
预期结果:
|_a
|_[b]
|_1
|_2
| |_k
|_3
=============
答案 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();
}