2010-07-23 3 views

ответ

6

Если вам нужно, чтобы перейти к узлу:

TreeNode.EnsureVisible(); 
+0

+1, правильный ответ. –

+0

yup, если вы точно знаете, какой узел вы ищете, то вышеупомянутый фрагмент кода будет программно прокручиваться до рассматриваемого узла. – IbrarMumtaz

0

Просто выберите и снимите нижний элемент. Это должно делать свое дело.

3

Попробуйте это:

treeView1.TopNode = treeView1.Nodes[500]; 

EDIT Может быть более наводящий :-)

private void Form1_Load(object sender, EventArgs e) 
    { 
     for (int i = 0; i < 100; i++) { 
      TreeNode node = treeView1.Nodes.Add(i.ToString()); 
      for (int j = 0; j < 10; j++) { 
       node.Nodes.Add(j.ToString()); 
      } 
     } 
    } 

    private void ScrollNode(TreeNode node) { 
     treeView1.TopNode = node; 
     treeView1.Refresh(); 
     System.Threading.Thread.Sleep(50); 
     if (node.IsExpanded) { 
      foreach (TreeNode subNode in node.Nodes) 
       ScrollNode(subNode); 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     treeView1.Focus(); 
     foreach (TreeNode node in treeView1.Nodes) { 
      ScrollNode(node); 
     } 
    } 
+0

Что делать, если нет 500 узлов ?! – fletcher

+0

Что делать, если у вас нет 500 узлов? ;-) –

+0

Флориан, спасибо за ответ. Как подключить внешний VScrollBar к TreeView? –

Смежные вопросы