1

私は次のようなTreeView Web Controlを持っています

1
  1.1
2
  2.1
     2.1.1
          2.1.1.1
          2.1.1.2
3
  3.1 
     3.1.1


[CheckBox] 2.1.1.2 node をチェックした場合、どうすれば2,2.1,2.1.1 や 2.1.1.2 のような結果を得ることができますか ? library/wwc698z7.aspx の例ですが、必要な出力が得られません。必要な出力を達成するためのヘルプや指示は大歓迎です。

private void PrintRecursive(TreeNode treeNode)
{
   // Print the node.
   System.Diagnostics.Debug.WriteLine(treeNode.Text);
   MessageBox.Show(treeNode.Text);
   // Print each node recursively.
   foreach (TreeNode tn in treeNode.ChildNodes)
   {
      PrintRecursive(tn);
   }
}

// Call the procedure using the TreeView.
private void CallRecursive(TreeView treeView)
{
   // Print each node recursively.
   TreeNodeCollection nodes = treeView.CheckedNodes; // Modified to get the Checked Nodes
   foreach (TreeNode n in nodes)
   {
      PrintRecursive(n);
   }
}
4

1 に答える 1

0
var texts = new List<string> { treeNode.Text };

while (treeNode.Parent != null)
{
    texts.Add(treeNode.Parent);
    treeNode = treeNode.Parent;
}

//Reverse to get the required Layout of the Tree
texts.Reverse(); 

var result = string.Join("\r\n", texts);

または、self を含む、first-level-parent から root-parent までの親ノード自体が必要な場合:

var parents = new List<TreeNode> { treeNode };

while (treeNode.Parent != null)
{
    parents.Add(treeNode.Parent);
    treeNode = treeNode.Parent;
}

// Now parents contains the results. Do whatever you want with it.
于 2012-05-31T22:53:16.577 に答える