2009-04-30 33 views
5

Sau khi nhãn của nút được chỉnh sửa trong cây, tôi cố gắng nghỉ dưỡng các nút để đặt mục được cập nhật ở đúng vị trí. Tôi làm điều này bằng cách gọi .Sort trong AfterLabelEdit xử lý sự kiện gây ra một vòng lặp vô hạn.C# Hình thức Windows TreeView Sắp xếp sau khi LabelEdit

Làm cách nào để có thể sử dụng các nút trong một lần xem trang sau khi nhãn đã bị thay đổi?

+1

Một điều tôi tìm thấy trong tài liệu MSDN của: Vì ListView .. :: AfterLabelEdit sự kiện diễn ra trước khi các nhãn chỉnh sửa cam kết, gọi ListView .. :: Sắp xếp phương pháp trong một handler cho việc này.. sự kiện sẽ sắp xếp mục bằng cách sử dụng giá trị ban đầu. –

Trả lời

6

Sử dụng BeginInvoke:

delegate void sort(); 

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

Điều đó làm việc trên mẫu của tôi. –

+0

Điều này hoạt động, cảm ơn bạn. – blu

8

Sử dụng BeginInvoke với một đại biểu MethodInvoker thay vì tuyên bố đại biểu của riêng bạn.

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

Tuyệt, đây là giải pháp sạch! – Mantisimo

Các vấn đề liên quan