Member 13765884 Ответов: 2

Автоматическая проверка дочерних узлов на treeview


Я должен был написать код для treeview, чтобы, когда пользователь проверяет взрослый узел, автоматически проверялся и дочерний узел. Но ничего не происходит, когда я запускаю его

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
    // The code only executes if the user caused the checked state to change.
    if (e.Action != TreeViewAction.Unknown)
    {
        if (e.Node.Nodes.Count > 0)
        {
            /* Calls the CheckAllChildNodes method, passing in the current
            Checked value of the TreeNode whose checked state changed. */
            this.CheckAllChildNodes(e.Node, e.Node.Checked);
        }
    }
}


Я продолжаю получать ошибку...
CS1061 C# не содержит определения и не может быть найден метод расширения, принимающий первый аргумент типа (отсутствует ли директива using или ссылка на сборку?)

Что я уже пробовал:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
    treeView1.BeginUpdate();
    foreach (TreeNode tn in e.Node.Nodes)
        tn.Checked = e.Node.Checked;
    treeView1.EndUpdate();
}

2 Ответов

Рейтинг:
7

Maciej Los

Ошибка компилятора CS1061 | Microsoft Docs[^] возникает при попытке вызвать метод или получить доступ к несуществующему члену класса.
Обратите внимание, что this.CheckAllChildNodes обратитесь к классу Form, и вы, вероятно, не определили такой метод. Добавьте ниже methd, чтобы узнать, исчезнет ли ошибка.

// Updates all child tree nodes recursively.
private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
   foreach(TreeNode node in treeNode.Nodes)
   {
      node.Checked = nodeChecked;
      if(node.Nodes.Count > 0)
      {
         // If the current node has child nodes, call the CheckAllChildsNodes method recursively.
         this.CheckAllChildNodes(node, nodeChecked);
      }
   }
}


Рейтинг:
2

Wendelius

Если я правильно понял ваш вопрос, пример кода приведен в документации события AfterChec. Взгляните на это TreeView элемент.Событие AfterCheck (System.Окна.Формы)[^]