2012-09-19 4 views
1

두 개의 배열이 있습니다. 하나는 웹 페이지의 라벨에 표시해야하고 다른 하나는 라벨의 위치로 표시해야합니다. 나는 "LB1, LB2, ... lb54" 웹 페이지의 여러 라벨

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

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

지금은 해당 위치에 라벨의 "가치"를 표시해야

가정하자

레이블 이름을 가진 웹 페이지 (54 개) 레이블이 있습니다. positions 배열은 값이 할당 될 순서를 나타냅니다. 그래서 21해야한다 (12) 레이블을

for (int j=1;j<=54; j++) 
{ 
    getLabelID("label" + positions [j].toString).Text = Convert.ToString(values[1]); 
} 
+0

레이블 이름이 lb1..lb54입니까? 이것은 _thedailywtf.com_, IMHO로 직행해야합니다. –

답변

0

첫 번째 배열은 0 인덱스를 기반으로 .. 라벨 (1) (22)을 가져야한다 등등 ...

나는 루프를 실행하여이 시도하고 그것을 가져올 수 없습니다 따라서 루프는 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]); 
} 
0

처럼 ' ToString() 끝에서 대괄호가 누락되었습니다. 시도 :

for (int j=1;j<=54; j++) 
{ 
    getLabelID("label" + positions [j].ToString()).Text = Convert.ToString(values[1]); 
} 
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; 
} 
+0

감사합니다.하지만 ID에 오류가 발생했습니다. 확장 방법 "id"가 없습니다. – user1375481

+0

도와 드리겠습니다 만 답변을 업데이트했습니다. –

0

을 기반으로하고 "54"을 갖고 싶어하지 않을 경우,이 같은 것을 하드 코딩 할 수 있습니다

positions.ToList().ForEach(
    p=>getLabelID(String.Format("label{0}",p)).Text=values[p].ToString() 
);