2012-07-31 31 views
0

在我的樹視圖中,我想記住在刪除或插入節點後哪些節點被展開並重繪該狀態。我通過記住擴展節點的索引來解決這個問題。如果一個節點被刪除,我會減少之後的所有元素。 這是有效的,因爲我可以通過treeView.SelectedNode訪問已刪除的節點,但是如何獲取插入節點的新索引? 我無法通過保存對節點或名稱或標記的引用來解決此問題,因爲當我重繪樹時,節點會全新創建 - 而且我認爲我無法獲得對新創建節點的引用 Best問候,Expecto我可以在樹視圖中獲取插入節點的索引嗎?

回答

0

的答案是不是真的是我一直在尋找,但之後我發現,插入後的「AfterSelect」事件觸發,我就是這麼做的:

private void treeViewProduct_AfterSelect(object sender, TreeViewEventArgs e) 
    { 

     if (insertMode) 
     { 

      treeViewProduct.NotifyAboutInsert(e.Node.Index); 
     } 
... 
} 

我的樹視圖,然後處理變之後的節點索引並完美重繪樹。

0

我的方式:用自己聲明的類:

class TreeNodeEx : TreeNode 
{ 
    public void Remove() 
    { 
     base.Remove(); 
     // what you want to do 
     UpdateNode(this.Parent); 
    } 
} 
0

你可以一個ObservableCollection綁定到樹節點然後:

 var obd = Observable.FromEvent<NotifyCollectionChangedEventArgs>(
      ev => obdCollection.CollectionChanged += CheckChanges,ev=> obdCollection.CollectionChanged -= CheckChanges); 


    private void CheckChanges(object sender, NotifyCollectionChangedEventArgs e) 
    { 
     Console.WriteLine("new Starting index : "+e.NewStartingIndex); 
     Console.WriteLine("Old Starting index : " + e.OldStartingIndex); 
     Console.WriteLine("new Items : " + e.NewItems); 
     Console.WriteLine("Old Items : " + e.OldItems); 


    } 

這樣,你可以檢查什麼在改變採集。

相關問題