В настоящее время я использую TreeView для отображения дерева файлов для визуализации различий в проекте контроля версий. У меня есть метод «Diff», который рекурсивно редактирует существующий узел в корневом массиве «Nodes» в TreeView, а затем обновляет дерево.
Однако я столкнулся с проблемой, когда корневой узел будет дублироваться, по-видимому, без причины, несмотря на то, что отладчик сказал мне, что в самом массиве TreeView есть один элемент в массиве «Узлы», без указания ошибка.
Я уже пытался использовать "Nodes.Clear()
", а затем повторно добавить нарушающий узел, однако даже при очистке массива дубликат сохраняется (даже когда Nodes.Count
равно 0). Я также пытался использовать BeginUpdate()
и 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 будет только один узел при его обновлении, но вместо этого я получу дублирующий узел, содержащий дублированное содержимое первого.