c # treeview datagridiew взаимодействие - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть древовидная структура, которая отображает определенную информацию.Если конкретная информация должна быть помечена, узел окрашен в красный цвет.Пользователь может просматривать сетку данных, отображающую всю информацию, относящуюся к красным узлам, по событию нажатия кнопки.

Каждая сетка данных имеет флажок, который можно использовать для переключения флага на триоде, который обновляет флаг базы данных sql,Я также хочу переключить цвет узла (т. Е. Визуальный флаг) обратно на черный.Я знаю, как сделать это с помощью рекурсии, однако древовидное представление может вырасти до 100 или 1000 узлов, и я беспокоюсь об эффективности.Есть ли другой способ взаимодействия с конкретным узлом без повторения?

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Альтернативой может быть хранение foreach GridRow, ссылка на ядро ​​TreeNode.

Здесь у вас есть два варианта:

  1. Если вы знаете TreeNode ссылка.Это очень просто.Все это сделано.
  2. Полагаю, вы не знаете ссылку TreeNode из Grid ... В этом случае вы можете сохранить ссылку String на узел " fullпуть ».Например: /A/B/C/D

Если вы знаете полный путь узла, вы можете эффективно выполнять поиск по дереву.

Используя эту альтернативу, ваша эффективность поиска узла будетбудет лучше, но потребление памяти будет выше.Если вы реализуете это, пожалуйста, следите за тем, как растет ваша память, особенно если у вас очень длинные имена в узлах.

Надеюсь, это поможет.

1 голос
/ 19 ноября 2010

В общем, если ваше дерево имеет какое-либо свойство, такое как Бинарное дерево или BST, вы можете сократить время, но в большинстве случаев это не относится к сценариям просмотра древовидных форм.

так что нет другого способа добраться до фактического узла, кроме как рекурсировать дерево.

Но вы можете использовать асинхронное программирование для поиска во вторичном потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...