Заполнение TreeView из экземпляра TreeView - PullRequest
0 голосов
/ 14 сентября 2010

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

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

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 ]

2 голосов
/ 14 сентября 2010

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

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

1 голос
/ 14 сентября 2010

Благодаря ответу Ханса Пассанта, вот как это сделать ...

For Each newNode As TreeNode In MyClass.myTreeView.Nodes 
    Dim cloneNode as new TreeNode
    cloneNode=newNode.Clone()
    aTreeView.Nodes.Add(cloneNode) 
Next 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...