powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Клонирование TreeNode пользовательского класса в TreeView
13 сообщений из 13, страница 1 из 1
Клонирование TreeNode пользовательского класса в TreeView
    #39524482
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые Гуру!

В TreeView добавляются удаляются и редактируются узлы пользовательского класса
При клонировании узла не клонируются пользовательские свойства
хотя делаю приведение типа к пользовательскому классу
Подскажите пожалуйста где грабли?

Использую пользовательский класс узлов
Код: c#
1.
2.
3.
4.
5.
6.
class MyTreeNode : TreeNode
    {
        public int NodeType;

        public MyTreeNode()
        {}


Клонирование через "буфер" - _ndBuffer
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
MyTreeNode _ndBuffer = new MyTreeNode();
private void NodesCopy()
{
       MyTreeNode nd = (MyTreeNode) this.trvRules.SelectedNode; //Здесь пользовательские свойства передаются
       MyTreeNode nd =  this.trvRules.SelectedNode as MyTreeNode; //Такой вариант тоже работает
       this._ndBuffer = (MyTreeNode) nd.Clone();  //Здесь пользовательские свойства НЕ ПЕРЕДАЮТСЯ, только базовые
       this._ndBuffer = nd.Clone() as MyTreeNode;  //Так тоже не работает
}

_ndBuffer = 3;

private void NodesPaste()
{
        MyTreeNode nd = (MyTreeNode) this.trvRules.SelectedNode; //Здесь пользовательские свойства передаются
        this.trvRules.BeginUpdate();
        foreach (MyTreeNode node in _ndBuffer.Nodes)
        {
            nd.Nodes.Add((MyTreeNode)_ndBuffer.Clone());  //Здесь пользовательские свойства НЕ ПЕРЕДАЮТСЯ, только базовые
        } 
        this.trvRules.EndUpdate();
}



Заранее всем благодарен за помощь
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39524487
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arbit
_ndBuffer = 3;


Прошу прощение за ошибку
Должно быть
Код: c#
1.
_ndBuffer.NodeType = 3;
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525031
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не может подсказать решение вопроса?
Или просто времени нет?

Я подожду
Заранее Спасибо
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525043
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit
Код: c#
1.
this._ndBuffer = (MyTreeNode) nd.Clone();  //Здесь пользовательские свойства НЕ ПЕРЕДАЮТСЯ, 


1. Зачем приведение класса если он и так такой?
2. Значит Clone () не работает.
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525044
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit, нужно переопределить public override object Clone()
Метод базового класса не знает о существовании производного и не может реализовать логику для клонирования его членов
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525065
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, Спасибо!
Наверное это то самое!

Вот только как это правильно сделать я пока не знаю. Все объять не успеваю :)
Буду благодарен за кусочек кода в качестве примера, если он небольшой,
или ссылку где можно почитать как это делается правильно

Спасибо
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525074
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit, типа того
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class MyTreeNode : TreeNode
    {
        public int NodeType;
        .............
        public override object Clone()
       {
               var cpy = (MyTreeNode) base.Clone();
               cpy.NodeType = this.NodeType;
               return cpy;
        }
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525075
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit, вообще рекомендуют все говн расширения пихать в Tag
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525083
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, Спасибо большое!
дело в том, что у меня в Tag лежит другая информация.

Если пользовательские свойства - это говн расширения,
почему это прописано в MSDN?
Для какой цели тогда создаются пользовательские классы?
Не совсем понимаю, растолкуйте пожалуйста. Только по почкам не бейте пожалуйста :))
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525085
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buserArbit, типа того
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class MyTreeNode : TreeNode
    {
        public int NodeType;
        .............
        public override object Clone()
       {
               var cpy = (MyTreeNode) base.Clone();
               cpy.NodeType = this.NodeType;
               return cpy;
        }


Спасибо большое за код!
Все работает
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525086
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit, да в целом все хорошо... это я "погорячился"
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525090
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, Хорошего дня!
...
Рейтинг: 0 / 0
Клонирование TreeNode пользовательского класса в TreeView
    #39525121
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbitдело в том, что у меня в Tag лежит другая информация.
Как вариант, класс в tag сделать сколь необходимо большим. А дерево часто в ГУИ и лучше его не трогать. Будет унтверсальнее.
Но там сам смотри.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Клонирование TreeNode пользовательского класса в TreeView
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]