Здравствуйте, manenkov, Вы писали:
M>Да, это я уже сделал, хотелось бы понять в чем проблема с первым вариантом кода.
treeMain.Nodes[n] = node;
treeMain.Nodes[n - 1] = nodeS; |
TreeNodeCollection.set_Item устроен очень любопытным образом:
public virtual void set_Item(int index, TreeNode value)
{
if ((index < 0) || (index >= this.owner.childCount))
{
throw new ArgumentOutOfRangeException("index", SR.GetString("InvalidArgument", new object[] { "index", index.ToString(CultureInfo.CurrentCulture) }));
}
value.parent = this.owner;
value.index = index;
this.owner.children[index] = value;
value.Realize(false); // Внутри посылается TVM_INSERTITEM контролу
} |
Как видим не делается никаких попыток удалить старый узел расположенный по индексу. Поэтому при каждом вызове этого метода появляется лишний узел в контроле, но не в массиве. |