Вчера я написал фрагмент кода для удаления всех элементов управления в форме, удовлетворяющей определенным критериям. Пишу это наивно, вот что я придумал.
for (int i = 0; i < this.Controls.Count; ++i)
{
if (this.Controls[i].Name.Length == 2)
{
this.Controls.Remove(this.Controls[i);
}
}
Но бывает так, что код неверный. Затем я меняю его на:
foreach (Control ctr in this.pbBoardImage.Controls)
{
if (ctr.Length == 2)
{
this.Controls.Remove(ctr);
}
}
Но это все равно было не правильно. Я знаю, что правильный путь будет:
for (int i = this.Controls.Count - 1; i >= 0; i--)
{
if (this.Controls[i].Name.Length == 2)
{
this.Controls.Remove(this.Controls[i]);
}
}
Тем не менее, это все еще не чувствует себя элегантно. Я не мог использовать List.RemoveAll, так как this.Controls не был списком. Итак, могу ли я попросить более элегантный способ, желательно без использования цикла?