Как изменить значок раскрытия / свертывания в древовидной структуре Telerik winform? - PullRequest
2 голосов
/ 13 июля 2011

Я пытаюсь настроить значок раскрытия / сворачивания в элементе управления Telerik Winform TreeView.

Если я заполняю элемент управления TreeView с помощью PropertyBuilder, я вижу Telerik.WinControls.UI.ExpandCollapseElements, которые я могу изменить, чтобы изменить значки раскрытия / свертывания.Однако я хочу заполнить свое дерево динамически.

Я рассмотрел изменение темы, но не вижу ExpandCollapseElements нигде в Visual Style Builder, и при этом я не вижу никакого способа изменить эти значки в конце RadTreeView объектной модели.

Скриншоты говорят, что это можно сделать, но чего мне не хватает?

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Чтобы глобально изменить развернутые и свернутые изображения, выполните следующие действия:

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

radTreeView1.TreeViewElement.ExpandImage = imageToUseForExpand;
radTreeView1.TreeViewElement.CollapseImage = imageToUseForCollapse;
1 голос
/ 14 июля 2011

Вы можете установить значки раскрытия / свертывания непосредственно при создании узлов.Например:

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.Если у вас возникли проблемы с этим кодом, убедитесь, что вы используете последнюю версию элементов управления.

0 голосов
/ 19 июля 2011

Я закончил тем, что сохранил тему, которую использовал в качестве XML, вручную отредактировал XML для этой темы, заново импортировал XML и сохранил его как .tssp.Мне повезло, что изображение, которое я хотел, было частью другой темы.

Этот подход, вероятно, работает лучше всего в моей ситуации, потому что нам потребуется поддержка тем, чтобы все выглядело хорошо на всех платформах, которые мы поддерживаем.

Другие предложенные подходы выглядят хорошо;Я не пробовал ни одного из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...