2013-10-15 19 views
0

我在將節點添加到XtraTreeList時遇到了很多麻煩。C#XtraTreeList的AppendNode方法需要太多時間

我使用的方法是TreeList.AppendNode(關於方法here的更多信息)。

實際結果:

如果我有一個叫MyClass類,我想一個節點在我XtraTreeList添加到現有的節點。

如果我做這樣的事情:

// tlTest is the XtraTreeList 
tlTest.AppendNode(new MyClass(/* Some Arguments */), parentNode); 

關注的是印在屏幕上。

,但如果我這樣做:

// tlTest is the XtraTreeList 
tlTest.AppendNode(new object[](){/* Some Arguments without cast */}, parentNode); 

這似乎很好地工作!

問題:

與做事的第二種方式的問題是,它需要SOOOO多少時間/ ressources對於像200個的子節點添加。我想知道,如果有事情做與動態鑄造...

問:

是否有這樣做的更好的辦法?保持代碼原樣不是一個好主意,因爲添加200個子節點需要大約6/7秒(這對於最終用戶來說是一個真正的痛苦)。

+1

爲什麼你不使用第一種方式?如果你首先創建對象數組,然後循環每個項目並將其添加到節點,會發生什麼? – Sebi

+0

就像我說的@塞比,如果我使用第一種方法,屏幕上沒有任何東西被打印出來......看起來,這棵樹除了'object []'外什麼都沒有識別......即使在上面的官方文檔鏈接中,使用'object []'打印兩個字符串..問題是:爲什麼他們不使用'List '例如... – Fares

+0

哦,對不起,你忘記了什麼「h」;-)你是否嘗試處理數據源屬性的treelist?我從來沒有用過這個抱歉。但是使用DataSource,你應該可以使用你自己的類。 – Sebi

回答

1

當您以非綁定模式添加多個節點時,有必要使用TreeList.BeginUnboundLoadTreeList.EndUnboundLoad方法來防止不必要的更新。

help-article

的BeginUnboundLoad和EndUnboundLoad方法時添加,刪除和 在未結合的方式修改節點應使用 避免過度的內部數據的更新。在綁定模式下,使用LockReloadNodes和UnlockReloadNodes方法代替 。