2017-04-03 10 views
-1

私は今、これは昇順でツリービュー項目を並べ替えているWindowsフォームのツリービュー項目の降順ソートを行うにはどうすればいいですか?

> // Summary: 
>   //Sorts the items in System.Windows.Forms.TreeView control. 
>   public void Sort(); -----(inbuilt Treeview metadata). 

**

private void SortButton_Click(object sender, EventArgs e) 
      { 
       this.treeView_Control.Sort(); 
      } 

**

を与えている、C#のアドインを通じてEAを使用しています。

すぐに私は昇順でソートを完了します。同じソートオプションをクリックすると、再びツリービュー項目が降順に並べ替えられます。

誰かがこれを行う方法を教えてください。

+0

これはどのようにhttp://stackoverflow.com/questions/43133835/sort-project-browser-tree-view-programmaticallyに関連していますか?私の前提が間違っていたか?関連する質問を確認/編集/削除してください。 –

答えて

0

MSDN - TreeView.Sort

から、この方法では、ノードテキストのアルファベットであるデフォルトのソート、またはソートTreeViewNodeSorterプロパティで指定されたカスタムを再適用します。既存のノードのテキストが変更された場合、またはノードがユーザーによって移動され、アイテムを再度ソートする場合は、このメソッドを使用できます。

だからあなたは(多分ctorのを)initilizationあなたIComparerを作成し、あなたにSomehwere TreeViewNodeSorter

public class NodeSorter : IComparer 
{ 
    public bool Descending {get;set;} 

    public int Compare(object x, object y) 
    { 
     TreeNode tx = x as TreeNode; 
     TreeNode ty = y as TreeNode; 

     int result = // Your compare logic here 

     if (Descending && result!=0) { 
      result = 2 % result + 1; 
     } 

     return result; 
    } 
} 

を設定する必要がありますあなたの並べ替えイベントに続いthis.treeView_Control.TreeViewNodeSorter = new NodeSorter()
などを追加:

private void SortButton_Click(object sender, EventArgs e) 
{ 
    var sorter = (NodeSorter)this.treeView_Control.TreeViewNodeSorter; 
    sorter.Descending = !sorter.Descending; 
    this.treeView_Control.Sort(); 
} 
関連する問題