2012-12-25 2 views
0

그룹 상자에 10 개의 확인란이 있습니다. "All"이라고 표시된 맨 위 체크 박스는 "All"에 체크 된 다른 체크 상자를 검사합니다.반복 코드를 대체 할 대표자

다른 9 개의 체크 상자에는 본질적으로 동일한 코드가 있습니다. 다음은 두 개의 확인란에 대한 예제입니다.

private void ckDal_Click(object sender, EventArgs e) 
    { 
     if (ckDal.Checked == false) 
      ckAll.Checked = false; 
    } 

    private void ckHou_Click(object sender, EventArgs e) 
    { 
     if (ckHou.Checked == false) 
      ckAll.Checked = false; 
    } 

동일한 코드를 반복하는 것은 싫지만. 단 하나의 이벤트 메소드로 위의 작업을 수행하는 위임자를 어떻게 만듭니 까?

답변

2

모든 CheckBox에 대해 단일 Click 이벤트 처리기를 사용할 수 있습니다. 이벤트를 제기 한 실제 CheckBox는 sender 매개 변수에서 사용할 수 있습니다. 그냥 CheckBox 구성 유형으로 캐스트 :

private void ck_Click(object sender, EventArgs e) 
{ 
    if (!((CheckBox)sender).Checked) 
     ckAll.Checked = false; 
} 

은 또한 당신이 참/거짓과 부울 값을 비교 할 필요가 없습니다 - 당신이 if 성명에서 직접 사용할 수 있습니다.

BTW 모든 체크 박스가 선택되었을 때 대소 문자를 확인하고이 경우 ckAll.Checked = true을 설정해야합니다.

+1

모든 체크 박스를 선택해 주셔서 감사합니다. – skibikegold

1
private void CheckBoxClick(object sender, EventArgs e) 
{   
    if (!((CheckBox)sender).Checked) 
     ckAll.Checked = false; 
} 
+0

감사합니다. 게시물이 도움이되었습니다. – skibikegold