2011-07-13 67 views
2

我想要自定義Telerik Winform TreeView控件上的展開/摺疊圖標。如何更改Telerik winform樹形視圖上的展開/摺疊圖標?

如果我用PropertyBuilder填充TreeView控件,我可以看到Telerik.WinControls.UI.ExpandCollapseElements,我可以修改它來更改展開/摺疊圖標。但是我想動態地填充我的樹。

我檢查了修改主題,但在Visual Style Builder的任何位置都看不到ExpandCollapseElements,我也沒有看到任何方法可以在對象模型的RadTreeView末端修改這些圖標。

截圖說它可以完成,但我錯過了什麼?

+0

當你說你想要動態地填充樹時,你想擴展/摺疊圖標爲不同的行不同?或者你只是計劃通過代碼添加節點,但可以爲所有節點添加相同的圖標? –

回答

0

我最終拯救我使用如XML主題,手動編輯爲主題的XML,重新導入XML並保存作爲.tssp。我很幸運,我想要的圖像是另一個主題的一部分。

這種方法在我的情況下可能效果最好,因爲我們需要主題支持才能使事物在我們支持的所有平臺中看起來很好。

建議的其他方法看起來不錯;我沒有嘗試過任何一個。

1

您可以在創建節點時直接設置展開/摺疊圖標。例如:

Image imageToUseForExpand = /* get this image from somewhere */; 
Image imageToUseForCollapse = /* get this image from somewhere */; 

RadTreeNode item = new RadTreeNode("Node with custom icons"); 

//NOTE: You need to add the node to the treeview before working 
//  with the TreeViewElement property (otherwise it will be null) 
radTreeView1.Nodes.Add(item); 

//Set the expand and collapse images to whatever you want 
item.TreeViewElement.ExpandImage = imageToUseForExpand; 
item.TreeViewElement.CollapseImage = imageToUseForCollapse; 

或者,如果你想這樣做的格式更一般(在這裏您不需要每次創建節點時指定的圖像),你可以處理NodeFormatting事件是這樣的:

//Either register the even in code (like this) or via the Designer 
radTreeView1.NodeFormatting += radTreeView1_NodeFormatting; 

//Then in the event handler, set the appropriate image 
private void radTreeView1_NodeFormatting(object sender, 
             TreeNodeFormattingEventArgs e) 
{ 
    //See whether the node is currently expanded and set the image accordingly 
    if (e.Node.Expanded) 
     e.NodeElement.ExpanderElement.SignImage = imageToUseForExpand; 
    else 
     e.NodeElement.ExpanderElement.SignImage = imageToUseForCollapse; 
} 

注意:我相信NodeFormatting事件是比較新的,所以你需要最近版本的Telerik來使用它。如果您在使用此代碼時遇到問題,請確保您正在運行最新版本的控件。

1

全局更改展開和摺疊的圖像,然後進行以下操作:

Image imageToUseForExpand = /* get this image from somewhere */; 
Image imageToUseForCollapse = /* get this image from somewhere */; 

radTreeView1.TreeViewElement.ExpandImage = imageToUseForExpand; 
radTreeView1.TreeViewElement.CollapseImage = imageToUseForCollapse; 
相關問題