Проверка родителя, если ребенок проверен - PullRequest
0 голосов
/ 22 марта 2012

Я получил это древовидное представление и сделал его, чтобы выбрать всех потомков, если родитель проверен, и обратно.Есть и другое правило: проверять иждивенца.Проблема в том, что я хочу проверить родителя, если проверен какой-либо ребенок, но из-за этих других правил я не могу найти способ сделать это без правил, которые вступают в конфликт.Вот код, который я сделал до сих пор:

    private void tvMorgan_AfterCheck(object sender, TreeViewEventArgs e)
    {
        //Check Children if parent checked
        if (e.Node.Nodes.Count > 0)
        {
            TreeNode tnParent = e.Node;
            if (tnParent.Checked)
            {
                foreach (TreeNode tnChild in tnParent.Nodes)
                {
                    tnChild.Checked = true;
                }
            }
            //Unchecked children if parent unchecked
            else
            {
                foreach (TreeNode tnChild in tnParent.Nodes)
                {
                    tnChild.Checked = false;
                }
            }
        }
        //If dependent node is selected, check the other two
        else if (((e.Node.Text.Contains("BRL/EUR")) && (e.Node.Checked)) && (e.Node.Parent.Text.Contains("FWD")))
        {
            TreeNode tnParent = e.Node.Parent;

            foreach (TreeNode tn in tnParent.Nodes)
            {
                if (tn.Text.Contains("BRL/USD") || tn.Text.Contains("EUR/USD"))
                    tn.Checked = true;
            }
        }
        //If one of the two necessary nodes are uncheked, then uncheck the dependent one
        else if ((((e.Node.Text.Contains("BRL/USD")) || (e.Node.Text.Contains("EUR/USD"))) && (!e.Node.Checked)) && (e.Node.Parent.Text.Contains("FWD")))
        {
            TreeNode tnParent = e.Node.Parent;

            foreach (TreeNode tn in tnParent.Nodes)
            {
                if (tn.Text.Contains("BRL/EUR"))
                    tn.Checked = false;
            }
        }
    }

Заранее спасибо

1 Ответ

0 голосов
/ 23 марта 2012

В документации TreeView.AfterCheck Event показано, как именно выполнить то, что вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...