Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

윈폼개발

닷넷을 기반으로 한 윈도우 응용프로그램 개발 지식을 다룹니다. 비지니스 응용프로그램을 위한 닷넷 윈폼 응용프로그램은 아주 강력합니다

[컨트롤, 목록] CheckedListBox

작성자 : 박종명
최초 작성일 : 2008-06-25 (수요일)
최종 수정일 : 2008-06-25 (수요일)
조회 수 : 3797

윈폼 컨트롤 중에서 목록을 나열(리스팅) 할 수 있는 컨트롤 중 가장 기본이 되는 것이 ListBox(리스트박스) 컨트롤입니다.

디자인 타임에서도 목록을 입력할 수 있으며 런타임에 코드로도 입력할 수 있습니다

다음처럼 코드로 목록을 입력하면

 listBox1.Items.Add("목록1");
 listBox1.Items.Add("목록2");
 listBox1.Items.Add("목록3");

 

다음과 같이 ListBox 에 목록이 추가됩니다

 

ListBox 에서 특정 항목을 선택하면 SelectedIndexChanged 이벤트가 발생합니다

아래 코드처럼 이벤트에서 선택된 항목을 가져올 수 있습니다

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    object item = this.listBox1.SelectedItem;
    MessageBox.Show("
선택된 항목 : " + item.ToString());
}

 

 

이번 포스트에서는 이 ListBox를 확장한 CheckedListBox 컨트롤에 대해서 알아보겠습니다

CheckedListBox 는 앞서 살펴본 ListBox 의 기능을 그대로 유지한채 목록에 체크박스가 추가된 컨트롤입니다.

다음은 CheckedListBox 컨트롤의 시그너쳐 입니다

 

시그너쳐에 나와있듯이 CheckedListBox 컨트롤은 ListBox 컨트롤을 상속받으므로 ListBox 의 거의 모든 기능을 그대로 유지합니다. 다음은 CheckedListBox 컨트롤에 목록을 추가하는 코드 입니다

checkedListBox1.Items.Add("목록1");
checkedListBox1.Items.Add("
목록2");
checkedListBox1.Items.Add("
목록3"); 

 

샘플그림 처럼 일반 ListBox 컨트롤에 각 목록 앞에 체크할 수 있는 체크박스가 추가된 형태입니다

이 컨트롤 역시 특정 항목이 선택되면 SelectedIndexChanged 이벤트가 발생하며 SelectedItem 속성으로

선택된 항목의 정보를 얻을 수 있습니다

 

또한 이 컨트롤은 SelectedItem 속성 이외에도 CheckedItems 라는 속성도 제공합니다

CheckedListBox 컨트롤의 CheckedItems 속성은 선택된 목록을 CheckedItemCollection 으로 반환합니다

 

주의할 점은,

CheckedListBox 컨트롤에서 선택된 항목과 체크된 항목은 다를 수 있다는 것입니다

아래 코드를 보겠습니다

private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
      object item = this.checkedListBox1.SelectedItem;
      MessageBox.Show("
선택된 항목 : " + item.ToString());

 

      foreach (object o in checkedListBox1.CheckedItems)
      {
          MessageBox.Show("
체크된 항목 : " + o.ToString());
      }
}

 

SelectedIndexChanged 이벤트에서 선택된 항목과 체크된 항목을 나타내는 코드입니다

다음은 실행결과 인데요... 선택된 항목과 체크된 항목이 다를 수 있음을 나타냅니다

 

또한 CheckedListBox 컨트롤은 체크박스와 관련된 이벤트를 하나 제공합니다

바로 목록에서 체크박스가 선택/선택해제 될때 발생하는 ItemCheck 이벤트 입니다

ItemCheck 이벤트는 이벤트 매개변수로 ItemCheckEventArgs 객체를 전달해 주는데요..

이 객체를 통해 현재 선택/선택해제 된 목록 정보를 얻을 수 있습니다

 

아래 샘플코드는 이벤트 매개변수로 전달된 ItemCheckEventArgs 객체로 체크/체크해제된 항목정보를 찾는 코드입니다 

 private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
 {
      MessageBox.Show(checkedListBox1.Items[
e.Index].ToString());
 } 

체크박스는 체크와 체크해제 그리고 결정되지 않음의 세가지 상태를 가집니다
이 값은 CheckState 열거형 값 중 하나를 가집니다. 다음은 CheckState 열겨형의 값입니다

보통 Checked(선택), Unchecked(비선택) 은 익숙하지만 Indeterminate(결정되지 않음)은 좀 낯설기도 합니다

다음 코드를 보겠습니다
CheckedListBox Item Add 하는 메서드의 CheckState 를 받아들이는 오버로드정의를 사용한 코드입니다

 checkedListBox1.Items.Add("목록1",CheckState.Checked);
 checkedListBox1.Items.Add("
목록2", CheckState.
Indeterminate);
 checkedListBox1.Items.Add("
목록3", CheckState.Unchecked);

 

위 코드를 실행하면 결과는 다음과 같습니다

 

목록 1 - 선택된 상태

목록 2 - 결정되지 않은 상태

목록 3 - 선택되지 않은 상태

 

목록 2는 결정되지 않은 상태를 나타내는 회색으로 표시됩니다

 

주의해야 할 점은 '결정되지 않은 항목'으로 지정된 목록도 선택된 항목이라는 점입니다

, checkedListBox1.CheckedItems 속성으로 체크된 항목들을 가져올 때 '결정되지 않은 항목'도 포함된다는 것입니다

 

목록의 CheckState 상태를 얻기 위해 GetItemCheckState 이라는 메서드를 제공합니다

 for (int i = 0; i < checkedListBox1.Items.Count; i++)
 {
       CheckState state = checkedListBox1.
GetItemCheckState(i);
        MessageBox.Show(state.ToString());
 }

 

또한 CheckState 를 설정하기 위한 SetItemChecked 메서드도 제공합니다

 

이상으로 CheckedListBox 에 대해 간략히 살펴 보았습니다

 

 

이름
비밀번호
홈페이지
YC <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요