2016-06-07 4 views
0

다음과 같은 레이블 컨트롤이 있습니다. Label1, Label2, Label3 ....... Label14, 디자인 타임에 비활성화되었습니다. 지금 난 분명히 위의 코드는 컴파일되지 않습니다 다음과 같이런타임에 일련 번호가 지정된 일련의 레이블 컨트롤을 사용하여 C#

for(int i=1;i<15;i++) 
{ 
    (Label+i).Enabled = true; 
} 

에서 루프를 사용하여 사용하려는.

Label1.Enabled = true; 
Label2.Enabled = true; 
Label3.Enabled = true; 
........... 
Label14.Enabled = true; 

내가 당신은에 라벨을 넣을 수 있습니다

+0

같은 대답은 다음과 같습니다. http://stackoverflow.com/questions/18481029/set-all-labels-font-before- opening-the-form은 대신 enabled 속성을 사용합니다. – theB

답변

2

당신은 this 양식을 말합니다이 예제에서는 부모의 Controls 수집

for(int i = 1; i < 15; i++) 
{ 
    Control label = this.Controls["Label"+i]; 
    if (label != null) 
     label.Enabled = true; 
} 

에서 이름으로 컨트롤을 얻을 수 있습니다. 라벨이 다른 부모 컨트롤 (예 : 패널 또는 그룹 상자)에 속하는 경우 this

+0

코드가 유망 해 보입니다. 그러나 코드를 실행할 때 "개체 참조가 개체의 인스턴스를 설정하지 못했습니다."오류가 표시됩니다. 모든 아이디어 ??? –

+0

@ gomeshmunda 제발 내 편집을 참조하십시오. 모든 레이블은 동일한 상위 컨트롤에 속합니까? – ASh

0

사전에 code.Thanks 자신에 clear.Please 조언을 단지 above.Hope 언급 된 방법 이외의 원하는 결과를 달성하는 다른 방법이 있나요 목록은 그 목록을 반복 :

:

List<Label> myLabels = new List<Label> { Label1, Label2, /*...*/ Label14}; 
foreach(Label lbl in myLabels) lbl.Enabled = true; 

이 당신의 Form 당신은 또한 그런 식으로 뭔가를 할 수있는 유일한 lables는 경우

foreach(Label lbl in this.Controls.OfType<Label>()) 
    lbl.Enabled = true; 

이 당신의 Form의 모든 (최상위) 제어를 통해 반복하고 trueEnabled을 설정하는 유형 Label의 모든 걸립니다.

0

Enumerable에 부착 한 다음 foreach을 사용하여 반복 할 수 있습니다.

List<Label> lblList = new List<Label> { Label1, Label2, Label3, Label4 }; 

foreach (Label label in lblList) 
{ 
    label.Enabled = true; 
} 

더 깨끗한 해결책을 위해 다음 구문을 사용할 수 있습니다.

lblList.ForEach(x => x.Enabled = true); 
관련 문제