1

我有两个数组,一个是我需要在网页标签上显示的值,另一个是标签的位置。我在网页上有 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]);
}
4

4 回答 4

0

第一个数组基于 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]);
}
于 2012-09-19T08:54:59.840 回答
0

您缺少 ToString() 末尾的括号。尝试:

for (int j=1;j<=54; j++)
{
    getLabelID("label" + positions [j].ToString()).Text = Convert.ToString(values[1]);
}
于 2012-09-19T08:55:37.497 回答
0

如果你不想硬编码“54”,你可以这样做:

positions.ToList().ForEach(
  p=>getLabelID(String.Format("label{0}",p)).Text=values[p].ToString()
);
于 2012-09-19T09:23:54.367 回答
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;
}
于 2012-09-19T08:57:41.413 回答