Задать вопрос
urcosmos
@urcosmos

Как привязать экземпляры класса (или их свойства) к нодам TreeView?

Друзья, прошу подсказать решение задачи:

5b450a2c73277329402746.jpeg

Есть форма, на ней есть TreeView, три TextBox и три Label.
Через текстбоксы каждому выбранному ноду дерева добавляется текстовая информация (сами ноды и эта информация добавляются по нажатиям кнопок). Т.е. у каждого нода где-то в памяти должны храниться три строковых значения.
При выборе нода эта текстовая информация должна отображаться в трех лейбелах.

Вопрос: как это реализовать?

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

Возможно, я иду не тем путем и данную задачу можно решить по-другому. Например, через свойство нода .Tag (если массив текстовых строк через разделитель туда запихнуть) или как-то еще. Но я чувствую, что решение на поверхности.

Больше интересует не конкретика, а сам принцип реализации подобных задач. Но если будет конкретика - еще лучше :)

Дополнительно интересует: если все-таки удается привязать экземпляр к ноду, то при удалении нода получается, что к экземпляру не будет никакого доступа. Как тогда не засорять память путем накопления этих "зависших в неизвестности" экземпляров?

Буду рад любому ответу: ссылкам на материалы что можно почитать, практическим примерам, просто идеям... Всему.

Спасибо.
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
devspec
@devspec
Помогло? Отметь решением
Делайте через БД.
Таблица с полями id, parent_id, node_name, text_info.
При выборе ноды делается запрос по id и достается text_info.
Для построения ноды рекурсивно используется связка id и parent_id, вариантов реализации много. Гуглить, например, так или так.
БД можно использовать SQLite.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы