我正在尝试自定义Telerik Winform TreeView控件上的展开/折叠图标。
如果我使用PropertyBuilder填充TreeView控件,我可以看到Telerik.WinControls.UI.ExpandCollapseElements,我可以修改它以更改展开/折叠图标。但是我想动态填充我的树。
我已经检查了修改主题,但是在Visual Style Builder中我没有看到ExpandCollapseElements,也没有看到在对象模型的RadTreeView端修改这些图标的方法。
屏幕截图说它可以完成,但我错过了什么?
答案 0 :(得分: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 :(得分:1)
要全局更改展开和折叠图像,请执行以下操作:
Image imageToUseForExpand = /* get this image from somewhere */;
Image imageToUseForCollapse = /* get this image from somewhere */;
radTreeView1.TreeViewElement.ExpandImage = imageToUseForExpand;
radTreeView1.TreeViewElement.CollapseImage = imageToUseForCollapse;
答案 2 :(得分:0)
我最终保存了我用作XML的主题,手工编辑该主题的XML,重新导入XML并将其另存为.tssp。我很幸运,我想要的图像是另一个主题的一部分。
这种方法在我的情况下可能效果最好,因为我们需要主题支持,以便在我们支持的所有平台上使事情看起来很好。
其他方法建议看起来不错;我没有尝试过任何一种。