Вчера я написал кусок кода, чтобы удалить все элементы управления в форме, которая соответствует определенным критериям. Наивно это пишу, вот что я придумаю.
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 не был List. Так я могу попросить более элегантный способ, желательно без использования цикла?