2017-04-03 67 views
-1

我使用EA通過C#插件,我已經給如何在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(); 
      } 

**

這是現在以升序排列的樹視圖中的項目。

很快我完成按升序排序,再次點擊相同的排序選項時,它應該再次按降序排列樹視圖項目。

有人請告訴我該怎麼做?

+0

這是如何與http://stackoverflow.com/questions/43133835/sort-project-browser-tree-view-programmatically?假如我的假設錯了?請查看/編輯/刪除相關問題。 –

回答

0

MSDN - TreeView.Sort

此方法重新應用默認的排序,這是由節點文本,或自定義排序由TreeViewNodeSorter屬性指定字母。如果現有節點的文本被更改或節點被用戶移動,並且您想要再次對項目進行排序,則可以使用此方法。

所以,你需要創建你IComparer並設置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; 
    } 
} 

Somehwere你動初始化(構造函數也許)添加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(); 
} 
相關問題