我有一个巨大的树,大约有1000个节点。当我使用TreeView.ExpandAll方法时,它会将整棵树滚动到底部,但不够平滑。如何使其滚动平滑或者干脆不滚动(保持在开头)?
我最近也遇到了这个问题。在调用ExpandAll()方法后,我所做的就是将TreeView中的SelectedNode设置为第一个节点,像这样:
this.treeView1.ExpandAll();
this.treeView1.SelectedNode = this.treeView1.Nodes[0];
你需要小心,因为如果你的TreeView中没有节点,这可能会抛出异常,所以最好将其放置在try-catch块中。
treeView1.BeginUpdate();
for (int i = 0; i < 4; ++i) {
TreeNode tn = new TreeNode("Node #" + i.ToString());
tn.Expand();
for (int j = 0; j < 250; ++j) {
tn.Nodes.Add("Child #" + j.ToString());
}
treeView1.Nodes.Add(tn);
}
treeView1.EndUpdate();
在 ExpandAll 之后立即使用 EnsureVisible 方法对我很有效:
tree.ExpandAll();
tree.Nodes[0].EnsureVisible();
.ExpandAll
之前执行。 - Romz