이번에는 저번에 했던 소스에 라디오 버튼을 추가해 보겠습니다.
먼저 변화된 디자인을 보겠습니다.
왼쪽이 새로운 디자인이고 오른쪽은 그 전 디자인입니다.
버튼 클릭카운터 하는부분은 빼고, 타이머 모드와 카운터 모드라는 라디오 버튼을 추가했습니다.
코드를 보시면 라디오 버튼 선택에 따른 변수 하나를 추가했습니다.
1 | Boolean timermode = true; | cs |
'timermode'가 true이면 '타이머 모드', false 이면 '카운터 모드'가 됩니다.
다음으로 라디오 버튼 클릭했을때의 동작입니다.
일단 라디오 버튼은 타이머가 동작하지 않을때에만 선택할 수 있도록 하는게 좋겠죠?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (timerCount == 0) { timermode = true; timer_init(); } } private void radioButton2_CheckedChanged(object sender, EventArgs e) { if(timerCount==0) { timermode = false; timer_init(); } } | cs |
Line 1~13은 '타이어 모드' 버튼이고, 15~27은 '카운터 모드' 버튼입니다.
둘다 'timerCout'가 0일때 즉, 타이머가 동작하지 않을때 모드를 바꾸도록 했습니다.
또한 Line 8과 line 22에 보면 'timer_init();'이 있는데 이 부분이 설정을 바꿔주는 부분입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | private void timer_init() { timerCount = 0; if (timermode == true) { timerText.Text = "00:00:00"; label2.Text = "타이머 테스트"; } else { timerText.Text = "0"; label2.Text = "카운터 테스트"; } } | cs |
바로 여기인데요, 각 모드에 맞게 텍스트를 뿌려주고, 카운트 변수도 초기화 해줍니다.
타이머 뿌려주는 부분도 카운터 모드에 맞게 추가되었습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | private void timer_display(object sender, EventArgs e) { timerCount++; if(timermode==true) { int sec = 0, min = 0, hour = 0; if (timerCount < 60) { sec = timerCount; } else if (timerCount < 3600) { min = timerCount / 60; sec = timerCount % 60; } else { hour = timerCount / 3600; min = (timerCount % 3600) / 60; sec = ((timerCount % 3600) % 60); } timerText.Text = hour.ToString("00") + ":" + min.ToString("00") + ":" + sec.ToString("00"); } else { timerText.Text = timerCount.ToString(); } } | cs |
Line 28까지는 기존의 타이머용 디스플레이 코드이고, Line 29~33은 카운터용 코드입니다.
그리고, 타이머가 동작할 때 라디오 버튼을 비활성화하고, 동작하지 않을때 활성화 시켜야 하는데,
이 코드는 타이머 시작과 종료때 넣었습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | private void button1_Click(object sender, EventArgs e) { timer1.Start(); textBox1.Text = "테스트를 시작합니다."; radioButton1.Enabled = false; radioButton2.Enabled = false; } private void button2_Click(object sender, EventArgs e) { timer1.Stop(); textBox1.Text = "테스트를 종료합니다."; radioButton1.Enabled = true; radioButton2.Enabled = true; timer_init(); } | cs |
Line 5~6에 타이머 시작시 라디오 버튼 비활성화, Line 13~14에 타이머 종료시 라디오 버튼 활성화 코드를 넣었습니다.
이제 실제로 동작시켜 보겠습니다.
처음 실행화면 요런 화면이 나옵니다.
타이머를 시작시키면 라디오 버튼이 비 활성화 됩니다.
종료하면 다시 활성화가 됩니다.
이번에는 카운터 모드로 변경한 후
시작
역시 비 활성화가 됩니다.
그리고 마지막으로 중요한 한가지!!
테스트 모드라고 적혀진 컨테이너에서 그룹박스를 만들어 줘야 합니다.
그래야 라디오 버튼이 하나로 묶입니다.^^
'Study > C#(Window programming)' 카테고리의 다른 글
C# Tip (디버깅중 코드 수정하기) (0) | 2015.07.24 |
---|---|
C#기초(리스트 뷰) (0) | 2015.07.23 |
C#기초(check box) (0) | 2015.07.22 |
C#기초(타이머) (0) | 2015.07.20 |
C# 기초(버튼) (4) | 2015.07.17 |