关闭TreeView中分支的排序

时间:2014-01-14 12:42:29

标签: c# winforms sorting treeview

我有一个Winforms Treeview,包含多个级别和分支的节点。树中节点的位置很重要。我需要一些未分类的分支,而树视图中的其余节点排序。我还需要能够根据用户输入通过代码打开/关闭排序。

从我可以阅读的内容和google中,winform treeview组件只能作为一个整体进行排序或取消排序。全有或全无。这是正确的,所以我必须自己编写排序机制,或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

在排序时我不知道忽略分支,但是如果你只想对一个分支进行排序,你可以尝试这种旧的学校方法:

private void SortBranch(TreeNode parentNode) {
  TreeNode[] nodes;
  if (parentNode == null) {
    nodes = new TreeNode[treeView1.Nodes.Count];
    treeView1.Nodes.CopyTo(nodes, 0);
  } else {
    nodes = new TreeNode[parentNode.Nodes.Count];
    parentNode.Nodes.CopyTo(nodes, 0);
  }
  Array.Sort(nodes, new TreeSorter());
  treeView1.BeginUpdate();
  if (parentNode == null) {
    treeView1.Nodes.Clear();
    treeView1.Nodes.AddRange(nodes);
  } else {
    parentNode.Nodes.Clear();
    parentNode.Nodes.AddRange(nodes);
  }
  treeView1.EndUpdate();
}