مرتب کردن گره های TreeView بعد از تغییر نام

فرض کنید که یک کنترل TreeView دارید و می خواهید بعد از اینکه یکی از گره های آن را تغییر نام دادید، مکان آن در TreeView بر اساس نامش تغییر کند، برای این کار ابتدا یک کنترل TreeView بر روی فرم قرار داده و خاصیت LabelEdit آن را برابر true قرار دهید، و سپس در سازنده فرم چند گره به آن اضافه کنید :

public Form1()
{
    InitializeComponent();

    treeView1.Nodes.Add("Root");

    treeView1.Nodes[0].Nodes.Add("NodeA");
    treeView1.Nodes[0].Nodes[0].Nodes.Add("ChildA");
    treeView1.Nodes[0].Nodes[0].Nodes.Add("ChildB");

    treeView1.Nodes[0].Nodes.Add("NodeB");
    treeView1.Nodes[0].Nodes[1].Nodes.Add("ChildA"); 
}

حال با دو بار کلیک بر روی رویداد AfterLabelEdit کد زیر را در داخل آن بنویسید :

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

برنامه را اجرا کرده و با کلیک بر روی نام یکی از گره ها و تغییر نام آن نتیجه را مشاهده کنید.