我在页面上有十个标签。我想在页面加载的for循环中使这些看不见。
我试过这个(不起作用):
for (int i = 0; i < 10; i++)
{
my_lbl+i.Visible = false;
}
因此,应该这样做:
my_lbl1.Visible = false;
my_lbl2.Visible = false;
my_lbl3.Visible = false;
my_lbl4.Visible = false;
等...
有办法做到这一点吗?
答案 0 :(得分:7)
将所有标签放入集合中:
private List<Label> labels = new List<Label>{my_lbl1, my_lbl2, my_lbl3, my_lbl4};
然后你可以迭代整个集合:
foreach(var label in labels)
label.Visible = false;
答案 1 :(得分:4)
制作List
个;
List<Label> yourlabels = new List<Label>{my_lbl1, my_lbl2, my_lbl3...};
并使用foreach
循环使其可见。
foreach(var label in yourlabels)
{
label.Visible = false;
}
我不知道是否有更好的方法,但这种方式对我来说似乎是合乎逻辑的。
答案 2 :(得分:3)
将标签放入集合中(如前面的答案所示)是一个很好的解决方案。您还可以使用FindControl
的{{1}}方法按名称检索控件。
Page
答案 3 :(得分:1)
或者,您可以将它们放入dictionary
:
Dictionary<string, Label> nameOfDict = new Dictionary<string, Label>();
nameOfDict.Add("label1", label1);
nameOfDict.Add("label2", label2);
有关...
nameOfDict ["label" + incrementator].visible = false;
或者,将它们动态创建为标签数组。
答案 4 :(得分:1)
我猜你可以使用Page的FindControl方法:
for (int i = 0; i < 10; i++)
{
FindControl(string.Format("my_lbl{0}", i)).Visible = false;
}
但是如果当然没有找到控件,请检查案例。
答案 5 :(得分:0)
如果你确定,你想要取消选中组合框中的所有复选框,你也可以这样做:
foreach (var item in groupBox1.Controls)
{
if (item.GetType() == typeof(CheckBox))
{
((CheckBox)item).Checked = true;
}
}
使用LINQ:
foreach (var item in groupBox1.Controls.Cast<object>().Where(item => item.GetType() == typeof(CheckBox)))
{
((CheckBox)item).Checked = true;
}