3

約 1000 ノードの巨大なツリーがあり、TreeView.ExpandAll メソッドを使用すると、すべてのツリーがスムーズに最後までスクロールされません。スムーズにスクロールするか、まったくスクロールしないようにする方法(最初のままにしておきます)?

4

3 に答える 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 に答える