1

私は 2 つの配列を持っています。1 つは Web ページのラベルに表示する必要がある値で、もう 1 つはラベルの位置です。ラベル名が「lb1、lb2、... lb54」の Web ページに 54 個のラベルがあります。

仮定する

int [] values = {21,22,18,16,17.........22}

int [] positions = {12, 1,3,5,54,.........8}

ここで、対応する位置のラベルに「値」を表示する必要があります。位置配列は、値が割り当てられる順序を記述します。したがって、ラベル 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()

を使用して値配列から常に2番目の要素を取得しています。これを次の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

このコードで試すことができます-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 に答える
0

「54」をハードコーディングしたくない場合は、次のようにすることができます。

positions.ToList().ForEach(
  p=>getLabelID(String.Format("label{0}",p)).Text=values[p].ToString()
);
于 2012-09-19T09:23:54.367 に答える