Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过获取nodes.text并设置为true或false来填充Treeview node.checked为true或false_C#_Winforms_Treeview - Fatal编程技术网

C# 如何通过获取nodes.text并设置为true或false来填充Treeview node.checked为true或false

C# 如何通过获取nodes.text并设置为true或false来填充Treeview node.checked为true或false,c#,winforms,treeview,C#,Winforms,Treeview,我有一个名为treeview1的treeview,在form1中有几个子节点,每个节点都有一个复选框。我得到了选中的节点,并将选中的值作为true保存在数据库中,将未选中的值作为false保存在表中。我需要将选中值修改为true或false,方法是将它们填充到表单2中另一个名为treeview2的树视图中 我的树视图看起来有点像这样 从这个表单中,我必须修改表单2中另一个TreeView2中的那些选中值。在这里,我需要从数据库中获取节点名并设置True或False,然后填充到Treeview2

我有一个名为treeview1的treeview,在form1中有几个子节点,每个节点都有一个复选框。我得到了选中的节点,并将选中的值作为true保存在数据库中,将未选中的值作为false保存在表中。我需要将选中值修改为true或false,方法是将它们填充到表单2中另一个名为treeview2的树视图中

我的树视图看起来有点像这样

从这个表单中,我必须修改表单2中另一个TreeView2中的那些选中值。在这里,我需要从数据库中获取节点名并设置True或False,然后填充到Treeview2节点中

注意:我在数据库中保存了Checked节点,Checked为True,Unchecked为False。因此,我必须通过在TreeView 2中填充来再次修改它,这是在Form2中。我只需要一个方法来检查Node.Text和set是否已从db检查

下面是收集列表中所有节点名称的代码

 private IEnumerable<TreeNode> ModifyGetUNNodes(string NodeName, bool nodeVale)
    {
        var checkUnNodes = new List<TreeNode>();
        GetUnNodes(checkUnNodes, ModifyTreeView.Nodes, NodeName, nodeVale);
        return checkUnNodes;
    }

    // Return a list of the TreeNodes that are checked.
    private static void GetNodes(ICollection<TreeNode> checkedNodes, IEnumerable nodes)
    {
        foreach (TreeNode node in nodes)
        {
            checkedNodes.Add(node);

            // Check the node's descendants.
            GetNodes(checkedNodes, node.Nodes);
        }
    }
形成此检查节点文本

 if(node.Text == "Bread")
     node.checked = y.Bread
这里,y.面包的价值是真实的

if(node.Text =="Chips")
      node.checked =y.Chips
这里y.Chips的值为false

像这样的一些我必须检查名称并在表单2中的TreeView 2中设置检查值

当我加载Form2时,我必须通过获取数据表单数据库来检查节点

注意:我将节点Bread Checked保存为true,在Bread列中为(true),而Wine未选中,因此它将在Wine列中保存为(False)


这是我得到答案的代码


    private IEnumerable<TreeNode> ModifyGetUNNodes(string NodeName, bool nodeVale)
        {
            var checkUnNodes = new List<TreeNode>();
            GetUnNodes(checkUnNodes, ModifyTreeView.Nodes, NodeName, nodeVale);
            return checkUnNodes;
        }

        // Return a list of the TreeNodes that are checked.
        private static void GetNodes(ICollection<TreeNode> checkedNodes, IEnumerable nodes, string nodeName, bool checkValue)
        {
            foreach (TreeNode node in nodes)
            {
                if(node.Text == nodeName)
                   node.Checked = checkValue;

                // Check the node's descendants.
                GetNodes(checkedNodes, node.Nodes);
            }
        }


这里的y.Bread是保存选中值的列名(True或False)。

感谢您抽出时间分享您的问题。你要什么还不清楚。你的目标和困难是什么?到目前为止你做了什么?请尝试更好地解释您的问题、您的开发环境和数据结构,并共享更多代码(无屏幕截图)、屏幕图像或草图以及用户故事或场景图。为了帮助您改进您的请求,请考虑阅读。您能解释一下,我需要通过在另一个树视图中填充校验值来修改真值还是假值?请@ OLIVIERROGIER,我有2个具有相同树视图的表单,我将FrimeTeeVIEW检查的节点保存为表中的true和unfalse作为false。我必须在表单2中的treeview2中填充选中的节点来进行修改,这意味着我可以再次选中更多的节点,或者取消选中并将其再次保存到datatable中。我不理解您的问题:如果您知道如何从表单1保存,您就知道如何从表单2保存,不是吗?我看你有答案了。如果不合适,请提供您的实际代码和屏幕截图好吗?@OlivierRogier我将这些检查值从form1 treeview1保存到DB中,但问题是我在form2 treeview2中填充了treeview1,就好像treeview1被检查和未检查一样,并以正确和错误的对应名称保存到DB中。当打开form2时,我必须从数据库中获取数据。

    private IEnumerable<TreeNode> ModifyGetUNNodes(string NodeName, bool nodeVale)
        {
            var checkUnNodes = new List<TreeNode>();
            GetUnNodes(checkUnNodes, ModifyTreeView.Nodes, NodeName, nodeVale);
            return checkUnNodes;
        }

        // Return a list of the TreeNodes that are checked.
        private static void GetNodes(ICollection<TreeNode> checkedNodes, IEnumerable nodes, string nodeName, bool checkValue)
        {
            foreach (TreeNode node in nodes)
            {
                if(node.Text == nodeName)
                   node.Checked = checkValue;

                // Check the node's descendants.
                GetNodes(checkedNodes, node.Nodes);
            }
        }

    var getData = DbContext.tblMenu.Select(x => x).ToList();
   foreach(var y in getData)
    {
     ModifyGetUNNodes("Bread", y.Bread.value);
    }