Как составить список проверенных узлов 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(
    List checked_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 List CheckedNodes(TreeView trv)
{
    List checked_nodes = new List();
    FindCheckedNodes(checked_nodes, trvMeals.Nodes);
    return checked_nodes;
}

Этот метод просто создает List & lt; TreeNode & gt; а затем вызывает метод FindCheckedNodes для коллекции Nodes элемента управления TreeView.

Когда вы нажимаете кнопку «Показать проверенную программу», она использует следующий код, чтобы получить список отмеченных узлов TreeView.

// Получить проверенные узлы.
List checked_nodes = CheckedNodes(trvMeals);

Источник: http://csharphelper.com/blog/2017/04/make-list-checked-treeview-nodes-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector