如何在.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:
默认情况下,它们按名称排序(按字母顺序)。如您所说,目标是:
- 仅排序 0 级节点。
- 如果 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。孩子不受影响。
如何在.Net Winforms 中对节点级别属性 为0 的Treeview 节点进行排序。 如果有子节点可用于不应排序的 0 级节点。
不知道预期结果是什么,但是...
我用 6 个文件夹 创建了一个示例:4 个空文件夹和 2 个 non-empty:
默认情况下,它们按名称排序(按字母顺序)。如您所说,目标是:
- 仅排序 0 级节点。
- 如果 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。孩子不受影响。