Как составить список проверенных узлов TreeView в C#
Если для свойства CheckBoxes элемента управления TreeView установлено значение true, тогда элемент управления отображает поля, которые пользователь может проверить, чтобы выбрать узлы. В этом случае вам, вероятно, потребуется найти проверенные узлы TreeView в какой-то момент.
Странно, что элемент управления TreeView не предоставляет простой метод для поиска отмеченных узлов TreeView. Фактически, у него даже нет простого способа перечислить узлы элемента управления, чтобы вы могли видеть, какие из них проверены. Оба эти упущения кажутся странными. В конце концов, элемент управления ListBox предоставляет пять свойств, которые помогут вам определить, какие элементы выбраны: SelectedIndex, SelectedIndices, SelectedItem tt>, SelectedItems и SelectedValue.
Один из способов найти проверенные узлы TreeView - это рекурсивно сканировать через узлы дерева и найти их. Элемент TreeView имеет свойство Nodes. Это свойство имеет тип TreeNodeCollection и содержит узлы верхнего уровня элемента управления.
Каждый узел в дереве имеет аналогичное свойство Nodes, которое содержит его дочерние узлы.
Чтобы перечислить каждый узел в дереве, вы можете написать метод, который перечисляет узлы внутри TreeNodeCollection и их потомков в дереве. В этом примере для создания списка отмеченных узлов TreeView используется следующий метод.
// Возвращает список проверяемых TreeNodes. private void FindCheckedNodes( Listchecked_nodes, TreeNodeCollection nodes) { foreach (TreeNode node in nodes) { // Добавьте этот узел. if (node.Checked) checked_nodes.Add(node); // Проверяем потомков узла. FindCheckedNodes(checked_nodes, node.Nodes); } }
Метод принимает в качестве параметра список & lt; TreeNode & gt; где он разместит отмеченные узлы TreeView. Он также принимает в качестве параметра a TreeNodeCollection.
Метод проходит через узлы в коллекции. Он проверяет каждый узел, а затем рекурсивно вызывает себя, чтобы проверить дочерние узлы, хранящиеся в свойстве Nodes.
Следующий метод завершает вызов FindCheckedNodes для элемента управления TreeView.
// Возвращает список проверенных узлов TreeView. private ListCheckedNodes(TreeView trv) { List checked_nodes = new List (); FindCheckedNodes(checked_nodes, trvMeals.Nodes); return checked_nodes; }
Этот метод просто создает List & lt; TreeNode & gt; а затем вызывает метод FindCheckedNodes для коллекции Nodes элемента управления TreeView.
Когда вы нажимаете кнопку «Показать проверенную программу», она использует следующий код, чтобы получить список отмеченных узлов TreeView.
// Получить проверенные узлы. Listchecked_nodes = CheckedNodes(trvMeals);