2010-04-03 46 views
0

我正在嘗試使用TreeView控件創建文件夾資源管理器。現在,我添加了一個ImageList和兩個圖像 - 一個用於文件夾,另一個用於選定的文件夾。我使用'BeforeExpand'事件來更改當前節點(文件夾)的圖標。問題是,當用戶選擇其他文件夾時,我不知道如何將其更改回來......我可以使用什麼事件?也許我不使用它的權利...?控制TreeView中節點的圖像

+0

這是wpf還是winforms? – Mathias 2010-04-03 17:41:07

回答

0

我認爲你必須保持擴大的最後一個節點的參考,因此如果用戶可以更改它以後

0

嗯,我不知道如果我理解正確的,但實際上,在一個文件夾資源管理器上下文,展開另一個節點,則不需要在之前擴展的節點上執行任何特定操作。如果用戶再次單擊它,則可以使用BeforeCollapse事件將其更改回來。它會適合你的需求嗎?

3

我假設您只想在選擇給定節點時更改顯示的TreeNode圖像。我不打算在這裏解決每個TreeNode帶有子節點的文件夾圖標的問題:我想如果你掌握了這裏發生的事情,那麼添加一個(第三)圖像和「正確的事情「來使文件夾顯式化:然後,如果您願意,可以擴展該文件夾,因此具有」無子節點「的節點可以具有用於選定/未選中的不同圖標。

(1添加一個ImageList到窗體與兩個圖像:索引#圖像0將是默認的(未選)樹節點圖像

(2添加AfterSelect事件處理程序到您的TreeView:改變形象在「選擇」圖像

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
    { 
     e.Node.SelectedImageIndex = 1; 
    } 

你會注意到,作爲選擇的節點發生變化:。之前選擇的樹節點的圖像將自動恢復到使用它的默認圖像(索引#0在ImageList)

注意:恕我直言,這很重要他重新區分在TreeView中展開TreeNode並在TreeView中選擇TreeNode:通過單擊「+」圖標可以展開任何TreeNode(帶有子節點):但不會選中它。當然,雙擊將同時展開和選擇。