2012-07-01 3 views
0

C# Winforms에서 사용자가 처음 양식을로드하는 동안 입력을 해당 레이블을 클릭하여 데이터베이스에 '텍스트'레이블로 가져옵니다. 다시 한 번 다른 사용자가 해당 양식을로드하면 해당 레이블을 사용하지 않도록 설정하려고합니다. 나는 그것을 어떻게 만들 수 있느냐? 사용자가 하나 개 이상의 레이블이 내가 "E10, E9, E8, E7 등으로 입력 문자열을 얻을 클릭하면"필수 텍스트"가 포함 된 레이블 찾기

  • :이 양식 샘플이 내가 노력하고있어입니다

    enter image description here

    입니다 ., "

  • 는 다른 사용자가 폼 나는 그 문자열을 검색하고 사용하여 해당 을 분할로드 할 때" "와 배열

    에 저장하지만 라 있는지 확인하는 방법을 모른다 배열에서 벨을 비활성화하십시오. 도와주세요.

+0

시도한 접근 방식은 합리적입니다. 왜 작동하지 않았습니까? –

+0

"필수 텍스트"가 포함 된 레이블을 찾는 방법을 알려줄 수 있습니까? –

+0

좋아, 현재 내 VS2010에서 작동하는 코드로 내 대답을 편집했습니다. 제발, 유럽 최종 축구 경기 (스페인 대 이탈리아) 시작하기 전에 작동하는지 확인하십시오 :) 나는 여기에 : D – Jonathan

답변

1

* 강력한 텍스트 * 1 .- 가 2 .- 레이블의 이름을 사용하여 라벨을 찾기 (I 라벨의 이름이 동일하다는 것을 supossed 한
배열에 루프를 수행 당신은 배열에있는 imput 문자열)
컨트롤을

foreach (string name in yourArray) 
{ 
    var matches = this.Controls.Find(name , true); 
    ((Label) matches).Enable = False 
} 

을 해제 3 .- 것을 내가 지금 여기에 컴파일러가없는, 나는 그것이 실행되기를 바랍니다. 그렇지 않으면 이해하십시오.

편집 : 자신의 텍스트 속성에 의해 라벨 찾기 : 레이블 패널, 그룹 상자, 또는 콘텐츠 컨트롤의 내부에있는 경우

foreach(Control c in this.Controls) 
{ 
    if(c is Label) 
    { 
     if((Label) c).Text == "RequiredText") 
     { 
      // Do stuff here ; 
     } 
    } 
} 

하십시오,주의 대신 contentControl.Controls을 우도해야 할 것 'this'를 사용하는 것.

편집 2 : 좋아,이 코드는 나를 위해 작동합니다. "샘플"텍스트가있는 레이블이 있습니다.

var myarray = "E1,E2,Sample".Split(','); 

    foreach (Control labelcontrol in this.Controls) 
    { 
     if (!(labelcontrol is Label)) continue; 
     foreach (var text in myarray) 
     { 
      if (labelcontrol.Text == text) 
       labelcontrol.Enabled = false; 
     } 
    } 
+0

그것은 오류를 보여줍니다 'system.windows.form.control []'형식으로 변환 할 수 없습니다 '시스템 .windows.form.label '. 그 뜻은???? 어떻게해야합니까? 레이블의 이름이 입력 문자열과 같지 않습니다. ( –

+0

은 배열을 반환하기 때문에 인덱스가 필요합니다 ((Label) matches [0]) – tam

+0

도움을 주셔서 감사합니다. 그러나 이제는 예외로 'Index as strarray를 "string [] strarray = retr_seats_upper.Split (쉼표)로 선언했습니다." –

관련 문제