Настроить сортировку Treeview - PullRequest
2 голосов
/ 22 июня 2011

У меня есть древовидная структура, которую нужно отсортировать по тегу каждого узла, а также по альфа-бета-версии.

, например:

  • Node1 , тег = A , текст = Apple
  • Узел2 , тег = B , текст = Baloon
  • Узел 3 , тег = A , текст = Справка

Я хочуСортируйте это так, что узлы с тегом A будут первыми, и только затем узлы с тегом B. Но я хочу, чтобы узлы, содержащие тег A, были отсортированы от A до Z.

(order = Node1, Node3, Node2 )

пожалуйста, помогите мне, как я могу это сделать?

заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 22 июня 2011

Если вы говорите о System.Windows.Forms.Treeview, вы можете использовать TreeViewNodeSorter и реализацию IComparer для создания собственной стратегии сортировки.

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

0 голосов
/ 22 июня 2011

спасибо! Я сделал это так:

 /// <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);
            }
        } 
...