powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Собственный класс TreeNode
6 сообщений из 6, страница 1 из 1
Собственный класс TreeNode
    #38744238
sahnovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день!
Прошу подтянуть понимание моё понимание ООП))...
Мне необходимо добавить свойство в класс TreeNode типа Boolan, например, обозначающее признак двойного клика на ветке.
Для этого я создал новый класс rsTreeNode , дочерний от TreeNode . Добавил новое свойство, и при создании ветки в TreeView передаю экземпляр моего класса в метод:
Код: c#
1.
TreeView.Nodes.Add(rsTreeNode)


Отсюда вопрос, теряется ли в данном случае моё новое свойство, и вообще, ветка, которую я создал в TreeView имеет тип TreeNode ? Или нужно переопределять все методы, применяемые в классе TreeView с класса TreeNode на класс rsTreeNode ?
Свойство Tag использовать не охота - хочется понять сам принцип.
Заранее благодарен!!!
...
Рейтинг: 0 / 0
Собственный класс TreeNode
    #38744242
sahnovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон, речь идёт о C#.
...
Рейтинг: 0 / 0
Собственный класс TreeNode
    #38744961
Alex Marmuzevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема то? В узлах и будет объект типа rsTreeNode, в котором будет нужное свойство.
В общем случае дочерний тип без проблем приводится к родительскому. А обратное как-минимум в C# не работает.
Т.е.
Код: c#
1.
2.
3.
4.
rsTreeNode rsNode = new rsTreeNode(...) 
TreeNode node = rsNode; // будет работать всегда.
rsNode = node; // компилятор ругнется и потребует явное приведение типа
rsNode = node as rsTreeNode; // а это уже корректно.


Кстати, rsTreeNode - какое-то некошерное имя класса, как мне кажется.
...
Рейтинг: 0 / 0
Собственный класс TreeNode
    #38745202
sahnovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Marmuzevich,
может и не кошерное)))
в том то и дело, у меня проблема прочитать свойство своего класса, который я запихнул в TreeView, ведь все методы возвращают класс родителя.
как мне прочитать мои свойства, когда класс rsTreeNode находится внутри TreeView?)
таким образом я смогу прочитать?
Код: c#
1.
(node as rsTreeNode).Property


думаю, нет.
...
Рейтинг: 0 / 0
Собственный класс TreeNode
    #38745255
sahnovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё норм, прошел отладчиком, такой вариант возвращает корректные значения моих свойств.
Хотя, мне всё же пока что не понятно, как преобразуя родителя в класс потомка можно вернуть нужные свойства, они должны быть пустыми, имхо))
...
Рейтинг: 0 / 0
Собственный класс TreeNode
    #38745288
Alex Marmuzevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sahnovichВсё норм, прошел отладчиком, такой вариант возвращает корректные значения моих свойств.
Хотя, мне всё же пока что не понятно, как преобразуя родителя в класс потомка можно вернуть нужные свойства, они должны быть пустыми, имхо))
Вообще то если совсем грубо, то создание объекта подразумевает выделение памяти под этой объект со всеми его свойствами-полями и другим рюшечками. Собственно то, что мы видим как объект, это вообще то "указатель" на область памяти, выделенную при создании этого объекта. А приведение типа вообще с этой областью памяти ничего не делаем. Так что поле пустым лишь от приведения типа стать не сможет при всём своем желании. Разве что такое может быть, если объект сериализуется-десереализуется... Но это как-бы несколько другая ситуация да и в этом случае приведение к дочернему типу выдало бы null.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Собственный класс TreeNode
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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