|
■No95122 (ぶなっぷ さん) に返信 > それはさておき、修正案ですが、Controlsがいわゆるコレクション(List, Arrayy, ...) > なら、LINQメソッド(拡張メソッド)を使うのがおすすめ。 > 以下の1行でおしまいです。 > int RemoveCnt = Controls.RemoveAll(x => x.Name == "AccountElement");
Arrayy → Array の誤記だとしても、 Array オブジェクトに Remove 系のメソッドは用意されていないのでは…?
List<> であれば RemoveAll がありますが、ここでいう Controls は、 Panel コントロールのプロパティのようなので、恐らくは Control.ControlCollection でしょう。 RemoveAll は使えないと思います。Remove / RemoveByKey / RemoveAt だけ。
LINQ で処理するとしたら、これでどうでしょう。 変数 target を省略すれば 1 行になりますが、そこまで圧縮すると、流石に読みにくそう。
AccountElement[] target = Controls.OfType<AccountElement>().Where(c => c.Name == "AccountElement").ToArray(); Array.ForEach(target, c => { using (c) { Controls.Remove(c); } });
|