【发布时间】:2011-08-19 19:59:02
【问题描述】:
好吧,假设我有一个名为 abc 的整数,我将 abc 设置为 2. 我怎么说 label2.visible = true;?
我的意思是,如果我将 abc 设置为 3,我想制作 label3.visible = true;
【问题讨论】:
标签: c# .net variables integer label
好吧,假设我有一个名为 abc 的整数,我将 abc 设置为 2. 我怎么说 label2.visible = true;?
我的意思是,如果我将 abc 设置为 3,我想制作 label3.visible = true;
【问题讨论】:
标签: c# .net variables integer label
在我看来,将控件放入数组中是最简单的方法,如下所示:
Label[] labels = new Label[] { label0, label1, label2, label3 };
像这样切换可见性:
void SetVisibility(int index, bool visible)
{
labels[index] = visible;
}
【讨论】:
您想使用Control.FindControl 方法。
Label label = myForm.FindControl("label" + val) as Label;
if (label != null)
{
// use...
}
【讨论】:
你可以这样做:
var theLabel = (Label) this.Controls.Find("label" + abc.toString());
theLabel.Visible = true;
这段代码未经测试,我想不到,但它应该可以工作。
【讨论】:
要回答您的实际问题,这可能通过反思来实现,但不是您真正想做的事情,我想不出一个有效的用例。
正如其他人发布的那样,使用数组。
【讨论】:
C# 确实不支持这种类型的语法。
将标签放入某种结构中,并使用它来操作标签。这里举几个例子:
List<Label> labels = new List<Label>();
int i = /* some valid index (0 based) */
labels[i].visible = true;
Dictionary<string, Label> labelDict = new Dictionary<string, Label>();
labelDict.add("label1", label1);
labelDict["label1"].visible = true;
或者,您可以从父窗体的子控件列表中获取标签并以这种方式设置可见性。
【讨论】:
一种方法是拥有标签数组,然后根据你可以做的数字:
label_array[abc].visible = true;
【讨论】:
两个简单的例子
if(abc == 2)
{
label2.visible = true;
label3.visible = false;
}
else if(abc ==3)
{
label3.visible = true;
label2.visiable = false;
}
or use a switch statement
switch(abc)
{
case 2:
label2.visible = true;
break;
case 3:
label3.visible = true;
break;
}
【讨论】: