Да - представьте, что у вас изначально есть предметы [a, b, c, d, e, f, g, h, i, j, k, l, m]
.
Теперь вы звоните RemoveAt(0)
.Это удаляет первый элемент (a
), оставляя вас с [b, c, d, e, f, g, h, i, j, k, l, m]
.
Теперь вы звоните RemoveAt(1)
.Это удаляет второй оставшийся предмет (c
), оставляя вас с [b, d, e, f, g, h, i, j, k, l, m]
.
Теперь вы звоните RemoveAt(2)
.Это удаляет третий оставшийся элемент (e
), оставляя вам: [b, d, f, g, h, i, j, k, l, m]
.
... и т.д.
Проблема в том, что вы думаетеиз индексов в оригинальном списке - не после «пока удалений».Если вы хотите удалить первые 6 записей, вы можете использовать:
for (int i = 0; i < 6; i++) {
menuMain.Items[0].ChildItems.RemoveAt(0);
}