2009-04-30 18 views
5

Después de editar la etiqueta de un nodo en el árbol, intento recurrir a los nodos para colocar el elemento actualizado en la posición correcta. Lo hago llamando al .Sort en el controlador de eventos AfterLabelEdit que causa un bucle infinito.C# Windows Form TreeView Ordenar después de LabelEdit

¿Cómo puedo recurrir a los nodos en una vista en árbol después de cambiar una etiqueta?

+1

Una cosa que he encontrado en la documentación de MSDN: Debido a que el evento .. :: ListView AfterLabelEdit tiene lugar antes de la etiqueta de edición se ha comprometido, llamando al ListView .. :: método Sort en un controlador de este.. evento clasificará el artículo usando el valor original. –

Respuesta

6

Uso BeginInvoke:

delegate void sort(); 

    private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) 
    { 
     treeView1.BeginInvoke(new sort(treeView1.Sort)); 
    } 
+1

Eso funcionó en mi muestra. –

+0

Esto funciona, gracias. – blu

8

Uso BeginInvoke con un delegado MethodInvoker en lugar de declarar su propio delegado.

private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) 
{ 
    treeView1.BeginInvoke(new MethodInvoker(treeView1.Sort)); 
} 
+0

¡Genial, esta es una solución limpia! – Mantisimo