C# 如何通过获取nodes.text并设置为true或false来填充Treeview node.checked为true或false
我有一个名为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检查 下面是收集列表中所有节点名称的代码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
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);
}