2010-02-04 97 views
2

在我的Windows應用程序中,我有一個樹視圖。我製作了一些自定義按鈕來向下移動一個節點。這是當點擊一個按鈕時會發生什麼:移動節點後C#Treeview不刷新

Node destNode = tvCategories.SelectedNode.NextNode; 
Node srcNode = tvCategories.SelectedNode; 
Node parentNode = srcNode.Parent; 

// Switch nodes 
parentNode.Nodes[destNode.Index] = srcNode; 
parentNode.Nodes[srcNode.Index] = destNode; 

代碼工作正常,但我的樹視圖沒有更新。我看不到節點的切換。

tvCategories.Refresh()tvCategories.Invalidate()tvCategories.Update()不起作用。

任何人都知道如何解決這個問題?

PS:我正在使用DevComponents的第三方樹視圖。

+0

你嘗試'Application.DoEvents()'? – dada686 2010-02-04 10:32:11

+0

你在哪裏建議放置該行? – Martijn 2010-02-04 10:32:54

+0

@Martjin在你的點擊動作結束時 – dada686 2010-02-04 10:42:50

回答

1

你可以嘗試刪除一個節點,並重新插入:

Node destNode = tvCategories.SelectedNode.NextNode; 
// Check for null (what happens, if the last node is selected?) 

// Switch nodes 
destNode.Parent.Nodes.Remove(destNode); 
destNode.Parent.Nodes.Insert(tvCategories.SelectedNode.Index, destNode); 
+0

感謝這種方式,它工作正常:)(你的代碼有一個小錯誤,它是destNode.Parent.Nodes.Remove()) – Martijn 2010-02-04 10:51:16

+0

是的,對不起,我沒有測試代碼:/ – tanascius 2010-02-04 11:01:30

+0

@tanascius我通常不這樣做,但我完全卡住你能幫助我的相關問題:http://stackoverflow.com/questions/26588519/c-sharp-treeview-doesnt-always -display-its-content 謝謝 – 2014-10-28 08:22:57

1

在樹視圖設置焦點將導致刷新,因爲我已經用

TreeView.Focus(發現 )