2013-08-26 2 views
2

Как сделать определенный узел дерева отображаемым в виде папки в виде дерева? Я создаю динамическое представление дерева с помощью таблицы в моей базе данных и на основе одного столбца, то есть NodeType, имеющего значение (1 или 2), я хочу, чтобы он отображался как папка или как обычный древовидный узел.Как сделать конкретный узел дерева отображаться в виде папки в виде дерева

Псевдокод будет более полезен.

desired result

Заранее спасибо!

+0

Что вы подразумеваете под «появлением папки». Встроенный элемент управления TreeView имеет текстовый графический интерфейс (который, с одной стороны, нелегко изменить). Вы хотите создать собственный элемент управления TreeView, показывающий, что именно? Изображение папки, если вы хотите? – varocarbas

+0

Я хочу значок, который сделает узел похожим на папку .... –

+1

Очистить. VahidND был быстрее меня (+1 для него). Если вы отвлеклись на 5 минут в ответе на C#, вы потеряете возможность :) – varocarbas

ответ

4

Вы можете поместить изображение своей папки в элемент управления ImageList и установить для этого элемента изображения свойство ImageList элемента управления TreeView, а при создании узлов установите ImageIndex этого узла на нужный индекс.

TreeNode tn = new TreeNode(); 
    if (imageShouldBeFolderImage) 
     tn.ImageIndex = 0; 

    // If you want to show another image for other cases, 
    // If you want no image ignore this else part 
    else    
     tn.ImageIndex = 1; 

Обновление:

Если выбрать узел изменяет это изображение на другое нежелательное изображение, это вызвано свойством SelectedImageIndex в TreeView, я предлагаю добавить пустое изображение в ImageList и установить узлы SelectedImageIndex.

TreeNode tn = new TreeNode(); 
if (imageShouldBeFolderImage) 
{ 
    tn.ImageIndex = 0; 
    tn.SelectedImageIndex = 0; 
} 
else 
{    
    tn.ImageIndex = 1;//the index of the empty image 
    tn.SelectedImageIndex = 1; 
} 
+0

Он хочет либо изображение, либо ничего. То есть: ImageList состоит только из одного изображения и делает tn.ImageIndex = 0 (если изображение/папка должно отображаться) или tn.ImageIndex = 1 (или любой другой индекс, когда изображение не должно отображаться). – varocarbas

+0

@varocarbas Точно! У тебя есть моя цель. Поэтому приведенный выше ответ не работает для меня. Скорее даже я не могу применить изображение к нормальному узлу жестким узлом кодирования. ImageIndex = 1; –

+1

@PrakashVishwakarma Нет, этот код работает. Просто обновите его, как было предложено: добавьте ImageList, состоящий только из одного изображения (образ вашей папки), привяжите его к дереву (treeView1.ImageList = imageList1;) и используйте этот код: tn.ImageIndex = 0; (показывает изображение) или tn.ImageIndex = 1; (или к любому другому индексу, ничего не показывает, потому что нет изображения с индексом 1) – varocarbas

Смежные вопросы