Проверка поддерева TreeView в C#

Иногда полезно, чтобы пользователь выбрал поддерево TreeView, щелкнув узел более высокого уровня. Затем пользователь может отменить выбор отдельных узлов в поддереве, если это необходимо.

Например, на рисунке, показанном здесь, я проверил окно «Ужин», и программа проверила все элементы в поддереве

TreeView. Затем я отменил выбор предметов Wine и Dessert. Отмена выбора десерта также отменяет выбор всех элементов в поддереве TreeView.

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

// Отметьте или снимите все узлы в поддереве этого узла.
private void trvMeals_AfterCheck(object sender, TreeViewEventArgs e)
{
    TreeNode node = e.Node;
    bool is_checked = node.Checked;
    foreach (TreeNode child in node.Nodes)
        child.Checked = is_checked;
    trvMeals.SelectedNode = node;
}

Этот код получает узел, который был отмечен или снят, и сохраняет его состояние Checked в переменной is_checked, чтобы сделать код более удобным для чтения. Затем он перебирает дочерние узлы узла и устанавливает все свои свойства Checked для соответствия.

Когда программа изменяет состояние Checked дочернего узла, этот узел вызывает событие AfterCheck, поэтому обработчик события выполняет и для этого узла, и он устанавливает Проверено свойство для детей ребенка.

Источник: http://csharphelper.com/blog/2017/05/check-a-treeview-subtree-in-c/

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