如何在.Net Winforms中对节点级别属性为0的Treeview节点进行排序

How to sort the nodes of Treeview where the nodes level property is 0 in .Net Winforms

如何在.Net Winforms 中对节点级别属性 为0 的Treeview 节点进行排序。 如果有子节点可用于不应排序的 0 级节点。

不知道预期结果是什么,但是...

我用 6 个文件夹 创建了一个示例:4 个空文件夹和 2 个 non-empty:

默认情况下,它们按名称排序(按字母顺序)。如您所说,目标是:

  1. 仅排序 0 级节点。
  2. 如果 Level 0 节点有 child 个节点,则不对其进行排序。

因为您没有提供您想要对 0 级节点进行排序的方法,所以我选择按 “首先是空文件夹,然后是 non-empty” 进行排序。所以我创建了名为 Level0NodeSorter 的自定义排序器,它首先定位没有 childs 的第 0 级节点,然后是它们:

Public Class Level0NodeSorter
    Implements System.Collections.IComparer

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer
        Dim node As System.Windows.Forms.TreeNode = TryCast(x, System.Windows.Forms.TreeNode)
        Return If(node.Level = 0 AndAlso node.Nodes.Count > 0, 1, 0)
    End Function
End Class

然后将自定义排序器应用到我的 TreeView:

treeView1.TreeViewNodeSorter = New Level0NodeSorter()
treeView1.Sort()

得到这个:

首先放置空文件夹。然后——non-empty。孩子不受影响。