我的C#代码中有一个树视图。我希望在单击按钮时用我的整个树视图中的不同文本替换树节点的所有现有出现。
例如,我有3个节点出现,其中'Text'为“Manual”。我想用文本“自动”替换所有这3个节点。问题是这3个节点在树视图中位于3个不同的分支下。它们不共享相同的父节点。我打算通过编写for循环来自动编写这个过程,但我不知道如何首先找到所需的3个节点。
答案 0 :(得分:3)
我建议使用递归。
当然这是一个例子,你需要删除myTree声明并使用你的树,但这应该让你开始。
private void replaceInTreeView()
{
TreeView myTree = new TreeView();
ReplaceTextInAllNodes(myTree.Nodes, "REPLACEME", "WITHME");
}
private void ReplaceTextInAllNodes(TreeNodeCollection treeNodes, string textToReplace, string newText)
{
foreach(TreeNode aNode in treeNodes)
{
aNode.Text = aNode.Text.Replace(textToReplace, newText);
if(aNode.ChildNodes.Count > 0)
ReplaceTextInAllNodes(aNode.ChildNodes, textToReplace, newText);
}
}
}