【问题标题】:C# Windows Form TreeView Sort after LabelEdit标签编辑后的 ​​C# Windows 窗体 TreeView 排序
【发布时间】:2025-12-16 20:15:01
【问题描述】:

在树中编辑节点的标签后,我尝试使用节点将更新的项目放置在正确的位置。我通过在 AfterLabelEdit 事件处理程序中调用 .Sort 来做到这一点,这会导致无限循环。

标签更改后如何在树视图中重新定位节点?

【问题讨论】:

  • 我在 MSDN 的文档中发现的一件事:因为 ListView..::.AfterLabelEdit 事件发生在标签编辑提交之前,因此在处理程序中为此调用 ListView..::.Sort 方法事件将使用原始值对项目进行排序。

标签: c# winforms sorting treeview


【解决方案1】:

使用 BeginInvoke:

    delegate void sort();

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

【讨论】:

    【解决方案2】:

    将 BeginInvoke 与 MethodInvoker 委托一起使用,而不是声明您自己的委托。

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

    【讨论】:

    • 酷,这是一个干净的解决方案!