自定义Treeview的排序

时间:2011-06-21 21:09:06

标签: c# winforms sorting treeview icomparable

我有一个树视图,需要根据每个节点的标记进行排序,并根据alpha beta进行排序。

例如:

  • Node1 ,tag = A ,text = Apple
  • Node2 ,tag = B ,text = Baloon
  • Node3 ,tag = A ,text = 帮助

我想对它进行排序,标记为A的节点将为第一个,然后是标记为B的节点。 但是,我希望包含标记A的节点从A到Z排序。

(订单= Node1,Node3,Node2

请帮帮我, 我该怎么办?

提前感谢!

2 个答案:

答案 0 :(得分:2)

假设您正在讨论System.Windows.Forms.Treeview,您可以使用TreeViewNodeSorter和IComparer的实现来创建自定义排序策略。

http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.treeviewnodesorter.aspx

答案 1 :(得分:0)

谢谢!我这样做了:

 /// <summary>
        ///  Create a node sorter that implements the IComparer interface.
       /// </summary>
        public class NodeSorter : IComparer
        {
            // compare between two tree nodes
            public int Compare(object thisObj, object otherObj)
            {
                TreeNode thisNode = thisObj as TreeNode;
                TreeNode otherNode = otherObj as TreeNode;

                // Compare the types of the tags, returning the difference.
                if (thisNode.Tag is  first_type&& otherNode.Tag is another_type)
                    return 1;
                 //alphabetically sorting
                return thisNode.Text.CompareTo(otherNode.Text);
            }
        }