RadioButton과 CheckBox 도구(클래스)는 사용자에게 선택지를 줄 때 사용할 수 있다.
[그림 1 : 좌 라디오버튼 우 체크박스]
radiobutton과 checkbox에는 공통적으로 존재하는 이벤트로 CheckedChanged가 있다.
'Checked' 속성의 값이 변경될 때 동작하는 이벤트인데,
이를 이용해 선택하는 동작이 있었을 때를 트리거로 다른 동작을 구현할 수 있다.
1 2 3 4 5 6 7 | private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (sender == this.radioButton1) { //동작 } } | cs |
[코드 1]
1 2 3 4 5 6 7 8 9 10 11 | private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (sender == this.checkBox1) { //동작 } if (this.checkBox1.Checked == false) { //동작 } } | cs |
[코드 2]
[코드 1]의 sender == this.radioButton1 은 this.radioButton1.Checked == true 로도 사용 가능하다.
마찬가지로 [코드 2]의 sender == this.checkBox1 도 this.checkBox1.Checked == true 로 사용 가능하다.
체크박스의 경우 여러개의 체크박스를 ListBox에 넣어 묶음으로 사용 가능하게 만들어둔
CheckedListBox 도구가 따로 존재한다.
Items라는 속성을 가지며 그 안에 체크박스 항목들을 자식 컨트롤로 갖는다.
항목들을 추가하기 위해 속성 창의 Items 프로퍼티 컬랙션을 설정하거나 Designer.cs 또는 초기화 코드에서
checkedListBox1.Items.Add("항목이름"); 처럼 직접 넣을 수 있다.
추가된 항목들은 각자 0번부터 Index값을 갖는다.
[그림 2]
CheckedListBox의 경우 그냥 CheckBox와는 달리 Item을 선택했을때 발생하는 SelectedIndexChanged 이벤트와
Item의 Checked 상태가 변경될 때 발생하는 ItemCheck 이벤트가 있다.
1 2 3 4 5 6 | private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e) { //if(this.checkedListBox1.SelectedIndex != -1){ this.label1.Text = this.checkedListBox1.SelectedItem.ToString(); //} } | cs |
[코드 3]
SelectedIndexChanged 이벤트는 SelectedIndex 값이 변경될 때 발생하는데
아무것도 선택된 항목이 없을 시 SelectedIndex 는 -1값을 갖고있다. 이를 이용해 조건문을 만들 수 있지만
[코드 3]처럼 해도 이벤트 발생을 위해선 일단 SelectedIndex 값이 변경되어야 하기에 동작은 차이가 없다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | private void itemCheck_Changed(object sender, ItemCheckEventArgs e) { string item = this.checkedListBox1.SelectedItem.ToString(); this.label1.Text = e.NewValue.ToString(); if (e.NewValue == CheckState.Checked) { this.listBox1.Items.Add(item); } else { this.listBox1.Items.Remove(item); } } | cs |
[코드 4]
ItemCheck 이벤트에선 e.NewValue로 현재 항목의 Checked 상태를 가져올 수 있다.
상태로는 Checked와 Unchecked 그리고 Indeterminate가 있다.
Checked는 선택된 상태 Unchecked는 선택되지 않은 상태 Indeterminate는 결정되지 않은 상태로
[그림 3 출처 : https://css-tricks.com/indeterminate-checkboxes/]
Indeterminate는 [그림 3]의 Tall Things 같은 경우 사용한다 생각하면 될 듯 하다.
[코드 4]의 5번 라인 처럼 현재 선택된 항목의 체크 상태를 불러와 CheckState를 이용해 비교하여 조건문을 만들 수 있다.
'IT > 윈도우 폼' 카테고리의 다른 글
[VS 2013] ProgressBar 이용한 작업 진행 상태 표시 (0) | 2018.05.26 |
---|---|
[VS 2013] 스크롤바를 이용해 RGB값 변경하기 (0) | 2018.05.20 |
[VS 2013] Timer를 이용한 실시간 시간 출력 (0) | 2018.05.17 |
[VS 2013] DateTimePicker로 시간 선택 및 표시 (0) | 2018.05.17 |
[VS 2013] 모달과 모달리스 (0) | 2018.01.30 |