复选框选中了子节点的状态

本文关键字:状态 子节点 复选框 | 更新日期: 2024-09-25 09:48:20

我使用VS 2005(.NET 2.0)C#处理Winform,该Winform具有对TreeView进行XML解析的功能。

我计划启用树视图列表的复选框。事实上,我已经启用了它们。我在这里找到了这段代码,同时寻找TreeView和TreeNode的一些属性,这些属性可能会有所帮助。我找到TreeNode.Checked属性和TreeView.CheckBoxes属性。

public void HighlightCheckedNodes()
{
   int countIndex = 0;
   string selectedNode = "Selected customer nodes are : ";
   foreach (TreeNode myNode in myTreeView.Nodes[0].Nodes)
   {
      // Check whether the tree node is checked.
      if(myNode.Checked)
      {
         // Set the node's backColor.
         myNode.BackColor = Color.Yellow;
         selectedNode += myNode.Text+" ";
         countIndex++;
      }
      else
         myNode.BackColor = Color.White;
   }
   if(countIndex > 0)
      MessageBox.Show(selectedNode);
   else
      MessageBox.Show("No nodes are selected");
}

所以我在我的测试项目中尝试了它,它只在父节点上有效,而在子节点上无效。我想做的和要做的是,我还必须确定子节点的检查状态。我正在做一个项目,需要选择单个到多个子节点,并在检查后执行一个外部程序。有了子节点,这可能吗?或者还有其他选择吗。

如果我有什么不清楚的地方,请告诉我。提前谢谢。

复选框选中了子节点的状态

我认为您需要将代码更改为以下内容(在我看来,您刚刚使用了MSDN中的代码)。给定的代码提供了一个您可以采用的示例答案。

   // Start from Root type node ; Loop them all
   foreach (TreeNode rootNodes in treeView1.Nodes)
   {
       // Sub note set of current  root
       foreach (TreeNode childs in rootNodes.Nodes)
       {
          childs.Text = "Checked";    // Testing for validity : First level of child
          /*
           * Needs to go further down if we have childs of childs
          foreach (TreeNode child_child in childs.Nodes)
          {
              child_child.Text = "Checked";  // Testing for validity : Second level of child
           }
         */ 
       }
  }

说明:

给定的示例将更改以下结构的文本(文本已检查并应用于子级)

  ROOT
     |-> Child
     |-> Child
  ROOT
     |-> Child
     |-> Child

如果你取消对最内部的foreach的注释,你可以将其应用于下面这样的结构((text Checked Applied to childs))

  ROOT
     |-> Child
          |-> Child
          |-> Child
     |-> Child
  ROOT
     |-> Child
     |-> Child

在您的代码中,您没有进一步深入到TreeNode,并且忘记了每个TreeNode都可能包含自己的子节点集合。

简单地说,

    myTreeView.Nodes[0].Nodes // <- This is wrong for what you want