我有两个数组,一个是我需要在网页上的标签上显示的值,另一个是标签的位置。我在网页上有54个标签,标签名称为“lb1,lb2,... lb54”
假设
int [] values = {21,22,18,16,17.........22}
int [] positions = {12, 1,3,5,54,.........8}
现在我需要在具有相应位置的标签上显示“值”。 position数组描述了赋值的顺序。所以标签12应该有21,标签1应该有22,依此类推......
我通过运行循环尝试了这个并且无法得到它..
for (int j=1;j<=54; j++)
{
getLabelID("label" + positions [j].toString).Text = Convert.ToString(values[1]);
}
答案 0 :(得分:0)
First Array是基于0索引的,因此你的循环应该从0开始到<54或数组长度
并且没有toString属性来获取字符串,有ToString()方法来获取字符串值。因此positions[j].toString
将为positions[j].ToString()
并且您始终使用values[1]
从值数组中获取第二个元素,需要将其更改为values[j]
你的循环应该像
for (int j=0;j<positions.Length; j++)
{
getLabelID("label" + positions[j].ToString()).Text = Convert.ToString(values[j]);
}
答案 1 :(得分:0)
你在ToString()末尾缺少括号。尝试:
for (int j=1;j<=54; j++)
{
getLabelID("label" + positions [j].ToString()).Text = Convert.ToString(values[1]);
}
答案 2 :(得分:0)
您可以尝试使用此代码 - 基于LINQ运算符
var controls = this.Controls.OfType<Label>().ToList();
foreach(Label item in controls)
{
var index = Convert.ToInt32(item.Id.ToString().Replace("label","").Trim());
var text = Convert.ToString(values[index]);
System.Console.WriteLine(text);
item.Text = text;
}
答案 3 :(得分:0)
如果你不想让“54”硬编码,你可以这样做:
positions.ToList().ForEach(
p=>getLabelID(String.Format("label{0}",p)).Text=values[p].ToString()
);