約 1000 ノードの巨大なツリーがあり、TreeView.ExpandAll メソッドを使用すると、すべてのツリーがスムーズに最後までスクロールされません。スムーズにスクロールするか、まったくスクロールしないようにする方法(最初のままにしておきます)?
質問する
2069 次
3 に答える
1
TreeView コントロールの BeginUpdate() メソッドと EndUpdate() メソッドを使用すると、ノードをツリーに追加している間、TreeView コントロールの描画を一時停止できます。TreeView コントロールの ExpandAll() メソッドは、コントロールのスクロールバー部分を表示する際にその部分を無視しているようです。
簡単な回避策は、ノード ブランチを TreeView コントロールに追加する前に、BeginUpdate() および EndUpdate() メソッドを使用して親ノードを展開することです。
例:
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();
于 2012-09-20T17:26:26.920 に答える
1
私は実際に最近この問題を解決しなければなりませんでした。ExpandAll() メソッドを呼び出した後に行ったのは、次のようにTreeViewのSelectedNodeを最初のノードに設定することだけでした。
this.treeView1.ExpandAll();
this.treeView1.SelectedNode = this.treeView1.Nodes[0];
TreeView にノードが 0 個ある場合、おそらく例外がスローされるため、注意が必要です。そのため、try-catch ブロックに配置することをお勧めします。
于 2012-09-20T16:39:01.540 に答える