5
昨日、特定の条件を満たすフォームですべてのコントロールを削除するコードを書きました。それを素朴に書いて、これが私が思いつくものです。ループ内のコントロールを削除する
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]);
}
}
しかし、それはまだエレガントな感じがしません。 this.ControlsはListではなかったので、List.RemoveAllは使用できませんでした。だから、私はよりエレガントな方法を、好ましくはループを使用せずに求めることができますか?
が私には良い答えのように思えます。私はそれを上回った。 –
それは私ではありませんでしたが、正解です。だから+1! –