我有一个Winforms Treeview,包含多个级别和分支的节点。树中节点的位置很重要。我需要一些未分类的分支,而树视图中的其余节点排序。我还需要能够根据用户输入通过代码打开/关闭排序。
从我可以阅读的内容和google中,winform treeview组件只能作为一个整体进行排序或取消排序。全有或全无。这是正确的,所以我必须自己编写排序机制,或者我错过了什么?
答案 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();
}