2009-04-30 15 views
5

Nachdem die Beschriftung eines Knotens in der Baumstruktur bearbeitet wurde, versuche ich, die Knoten neu zu positionieren, um das aktualisierte Element an der richtigen Position zu platzieren. Ich tue dies, indem ich .Sort in AfterLabelEdit-Ereignishandler, der eine Endlosschleife verursacht, aufrufen.C# Windows Form TreeView Sortieren nach LabelEdit

Wie kann ich die Knoten in einer Baumansicht nach der Änderung eines Etiketts umsortieren?

+1

Eine Sache fand ich in MSDN in der Dokumentation: Da die Listview .. :: AfterLabelEdit Veranstaltung vor dem Label bearbeiten nimmt sich verpflichtet, die Listview-Aufruf .. :: Sort-Methode in einem Handler für diesen.. Das Ereignis sortiert das Objekt mit dem ursprünglichen Wert. –

Antwort

6

Verwendung BeginInvoke:

delegate void sort(); 

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

Das hat an meiner Probe funktioniert. –

+0

Das funktioniert, danke. – blu

8

Verwenden BeginInvoke mit einem MethodInvoker Delegierten stattdessen Ihre eigenen Delegierten zu erklären.

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

Cool, das ist eine saubere Lösung! – Mantisimo