C# 我想对所有的树视图进行操作';s节点
我在c#中有一个带有树视图的windows应用程序。现在我想检查该树视图的所有节点,包括节点的节点。 我尝试了以下代码:C# 我想对所有的树视图进行操作';s节点,c#,.net,treeview,C#,.net,Treeview,我在c#中有一个带有树视图的windows应用程序。现在我想检查该树视图的所有节点,包括节点的节点。 我尝试了以下代码: for (int i = 0; i < treevwaccess.Nodes.Count; i++) { formid = treevwaccess.Nodes[i].Name; access = treevwaccess.Nodes[i].Checked; user.updateaccesslevel(lblId
for (int i = 0; i < treevwaccess.Nodes.Count; i++)
{
formid = treevwaccess.Nodes[i].Name;
access = treevwaccess.Nodes[i].Checked;
user.updateaccesslevel(lblId.Text, formid, access);
}
for(int i=0;i
但此代码仅检查级别0中的节点,您必须使用
堆栈或类似以下的递归方法:
DoStuff(treevwaccess.Nodes);
...
void DoStuff(TreeNodeCollection nodes)
{
foreach(TreeNode node in nodes)
{
user.updateaccesslevel(lblId.Text, node.Name, node.Checked);
DoStuff(node.Nodes);
}
}
您需要像这样创建和调用递归函数
static void main()
{
var treevwaccess = new System.Windows.Forms.TreeView();
CheckAll(treevwaccess.Nodes);
}
static void CheckAll(System.Windows.Forms.TreeNodeCollection nodes )
{
foreach (System.Windows.Forms.TreeNode node in nodes)
{
var formid = node.Name;
var access = node.Checked;
user.updateaccesslevel(lblId.Text, formid, access);
CheckAll(node.Nodes);
}
}
您还必须检查根节点的子节点
为此,请尝试此代码
for (int i = 0; i < treevwaccess.Nodes.Count; i++)
{
formid = treevwaccess.Nodes[i].Name;
access = treevwaccess.Nodes[i].Checked;
user.updateaccesslevel(lblId.Text, formid, access);
CheckChildNodes(treevwaccess.Nodes[i]);
}
void CheckChildNodes(TreeNode node)
{
if (node.Nodes.Count > 0)
{
for (int i = 0; i < node.Nodes.Count; i++)
{
formid = node.Nodes[i].Name;
access = node.Nodes[i].Checked;
user.updateaccesslevel(lblId.Text, formid, access);
}
}
}
for(int i=0;i0)
{
对于(int i=0;i
这对你有帮助