可以这样做吗?在标签名称中使用变量
var test = 1;
label+test+.Text = "Some text goes here...";
这将导致:
label1.Text = "Some text goes here...";
我不介意使用开关的情况下,如果我有几个案例,但我有一个40个标签,我想动态分配的依据文本变量值。
可以这样做吗?在标签名称中使用变量
var test = 1;
label+test+.Text = "Some text goes here...";
这将导致:
label1.Text = "Some text goes here...";
我不介意使用开关的情况下,如果我有几个案例,但我有一个40个标签,我想动态分配的依据文本变量值。
在表单中使用Controls.Find()。
void Button1Click(object sender, EventArgs e)
{
var test = 1;
var labels = Controls.Find("label" + test, true);
if (labels.Length > 0)
{
var label = (Label) labels[0];
label.Text = "Some text goes here...";
}
}
我有一个像40个标签,我将取决于可变值
这里的另一实例中,这基本上是相同的方法Handoko就像动态分配的文本 :
for(int i = 1; i <= 40; i++)
{
Label lbl = this.Controls.Find("label" + i.ToString(), true).FirstOrDefault() as Label;
if (lbl != null)
{
lbl.Text = "Hello Label #" + i.ToString();
}
}
var test = 1;
Control label = this.FindControl("label" + test);
if(label != null)
{
label.Text = "Some text goes here...";
}
更多信息FindControl is availa ble at, https://msdn.microsoft.com/en-us/library/system.web.ui.control.findcontrol%28v=VS.100%29.aspx?f=255&MSPPError=-2147217396
有可能,您需要使用像ExpandoObject这样的动态对象。请参阅 - http://stackoverflow.com/questions/11891381/creating-dynamic-variable-names-in-c-sharp – William
@William Expando对象在这里做什么?不是很多...... – DavidG
@William虽然动态对象可能工作,但直接使用字典是更常见的方法来解决这个问题(并且会更容易得到正确的结果)...正如在CSV示例中,您已经将'dynamic '对于单行而言会更好,而不是对于表本身... –