проверьте и снимите все узлы дерева в C # - PullRequest
5 голосов
/ 27 мая 2011

У меня есть древовидное представление в моем приложении Windows и в древовидном представлении с флажками, и у меня есть некоторые "родительские узлы" и некоторые "дочерние узлы", и я хочу ПРОВЕРИТЬ И ОТМЕНИТЬ родительский и дочерний узлы одновременнопри нажатии на кнопку «Проверить все» и «Снять все» ... Как мне это сделать?

Ответы [ 3 ]

17 голосов
/ 27 мая 2011

Попробуйте что-то вроде этого:

public void CheckAllNodes(TreeNodeCollection nodes)
{
    foreach (TreeNode node in nodes)
    {
        node.Checked = true;
        CheckChildren(node, true);
    }
}

public void UncheckAllNodes(TreeNodeCollection nodes)
{
    foreach (TreeNode node in nodes)
    {
        node.Checked = false;
        CheckChildren(node, false);
    }
}

private void CheckChildren(TreeNode rootNode, bool isChecked)
{
    foreach (TreeNode node in rootNode.Nodes)
    {
        CheckChildren(node, isChecked);
        node.Checked = isChecked;
    }
}
2 голосов
/ 27 мая 2011

Попробуйте

private void CheckUncheckTreeNode(TreeNodeCollection trNodeCollection, bool isCheck)
        {
            foreach (TreeNode trNode in trNodeCollection)
            {
                trNode.Checked = isCheck;
                if (trNode.Nodes.Count > 0)
                    CheckUncheckTreeNode(trNode.Nodes, isCheck);
            }
        }

Передайте treeView.Nodes этой функции, например, CheckUncheckTreeNode(trView.Nodes, true); в событии нажатия кнопки для проверки всех узлов.Чтобы снять все отметки CheckUncheckTreeNode(trView.Nodes, false);.

0 голосов
/ 02 июля 2012

Для веб-приложений ASP.NET:

Button_Click() {
    CheckUncheckTreeNode(YourTreeView.Nodes, false);
}

private void CheckUncheckTreeNode(TreeNodeCollection trNodeCollection, bool isCheck) {
    foreach (TreeNode trNode in trNodeCollection) {
        trNode.Checked = isCheck;
        if (trNode.ChildNodes.Count > 0)
            CheckUncheckTreeNode(trNode.ChildNodes, isCheck);
    }
}
...