我目前正在使用 TreeView 来显示文件树,以可视化源代码控制项目的差异。我有一个“Diff”方法,它递归地编辑 TreeView 中根“Nodes”数组中的现有节点,然后更新树。
但是,我遇到了一个问题,即根节点似乎无缘无故地重复,尽管调试器告诉我在 TreeView 的最根节点的“节点”数组中有一个元素,但没有任何错误指示。
我已经尝试使用“ Nodes.Clear()”,然后重新添加有问题的节点,但是即使清除数组,重复项仍然存在(即使Nodes.Count为 0)。我也尝试过使用BeginUpdate()and EndUpdate(),但无济于事。
这是一个 MCVE:
public partial class BrokenControl : TreeView
{
public BrokenControl()
{
InitializeComponent();
}
public void Go(object sender, EventArgs e)
{
Nodes.Add("Root");
Nodes[0] = RecursiveEdit(Nodes[0]);
Update();
}
//This function simply recursively edits the Nodes array.
int iterations = 10;
private TreeNode RecursiveEdit(TreeNode node)
{
node.Nodes.Add(iterations.ToString());
iterations--;
if (iterations<=0)
{
return node;
}
RecursiveEdit(node.Nodes[0]);
return node;
}
}
如前所述,我只希望 TreeView 在更新时只有一个节点,但我得到一个包含第一个重复内容的重复节点。