2010-09-13 5 views
0

У меня есть класс, назовем MyClass. В этом классе у меня есть свойство TreeView, позвольте мне позвонить myTreeView В моем коде я заполняю узлы этого TreeView, поэтому я могу использовать его позже. Тогда, когда пришло время использовать его, я не смог взять все узлы из myClass и поместить их в элемент управления Tree View в моей форме.Заполнение TreeView от экземпляра TreeView

Я пробовал две вещи:

1.

aTreeView=MyClass.myTreeView 

, который просто ничего не возвращает (TreeView пусто)

2.

For Each newNode As TreeNode In MyClass.myTreeView.Nodes 
     aTreeView.Nodes.Add(newNode) 
    Next 

я получаю то же самое результат здесь ... пустой TreeView

Странно то, что при отладке TreeView в MyClass хорошо заполнен соответствующими значениями и в цикле newNode не пуст, на самом деле есть что-то, но по какой-то причине оно ничего не показывает.

Любая помощь будет оценена,

Благодаря

ответ

2

Первый фрагмент не может работать, потому что aTreeView является ссылкой на TreeView, который хранится в коллекции Controls формы. Назначение просто изменяет ссылку, оно не изменяет фактическое TreeView, на которое смотрит пользователь.

Второй фрагмент ошибочен, потому что у TreeNode есть владелец. TreeView. Код будет пустым TreeView в вашем классе. Перемещенные узлы могут быть не видны, потому что вы использовали неверную ссылку, возможно, неправильный экземпляр формы. Обязательно используйте ту, на которую смотрит пользователь. Для создания копии узла вам необходимо использовать метод TreeNode.Clone().

+0

прекрасно работает ... ТНХ Я добавлю код – Iggy

1

Благодаря ответ Ганса Passant, это то, как заставить его работать ...

For Each newNode As TreeNode In MyClass.myTreeView.Nodes 
    Dim cloneNode as new TreeNode 
    cloneNode=newNode.Clone() 
    aTreeView.Nodes.Add(cloneNode) 
Next 
Смежные вопросы