次のような単純なforループがあります。
for (int i = 0; i > 20; i++)
{
}
現在、20個のラベルがあります(label1、label2、label3など)。
私は次のようなことをしたいと思います:
for (int i = 0; i > 20; i++)
{
label[i].Text = String.Empty;
}
これを達成するための最も簡単な方法は何ですか?
ラベルが1つのコンテナに配置されている場合、たとえばForm
、次のようにすることができます。
foreach(Label l in this.Controls.OfType<Label>())
{
l.Text = string.Empty;
}
他のコンテナについても同じです。たとえば、Panel
または、コンテナの名前(など)GroupBox
に置き換えてください。this
panel1.Controls
ラベルの配列またはリストを作成し、そのリストをループして各ラベルのプロパティを設定します
List<Label> labels = new List<Label>();
labels.Add(label1);
foreach(Label l in labels)
{
l.Text = String.Empty;
}
私はあなたのソリューションを設計上の欠陥と呼びますが、私は次のようなものを選びます:
var itemArray = this.Controls.OfType<Label>();
foreach(var item in itemArray)
{
item.Text = string.Empty;
}
それが最も簡単かどうかはわかりませんが、最短です。
this.Controls.OfType<Label>().ToList().ForEach(lbl => { lbl.Text = String.Empty; });
たぶんあなたはFindControlを次のようなもので使うことができます
for(int i = 0; i < 5; i++)
{
(FindControl("txt" + i.ToString())).Text = String.Emty;
}