12. 윈도우 계산기 - 숫자 입력 구현
01. 숫자 입력 버튼 7, 8, 9 구현
01.1 버튼 7, 버튼 8, 버튼 9 입력을 구현합니다.
![](https://blog.kakaocdn.net/dn/bFsJfz/btsJ4Zqegn6/c8rmFwxxhbIeZLlazQoBSK/img.png)
01.2 "버튼 7" 컨트롤의 이벤트를 생성하기 위해 버튼 컨트롤을 더블클릭합니다.
![](https://blog.kakaocdn.net/dn/9aMUH/btsJ7Detv3d/dVlQzJ5Vpq6rtvff9Fv350/img.png)
01.3 "버튼 7" 컨트롤의 이벤트가 Code behind에 sevenButton_Click 이벤트가 자동 생성됩니다.
![](https://blog.kakaocdn.net/dn/bPfV8E/btsJ6feDd9U/AH4VdtlPbVpIO7JkpOxji1/img.png)
01.4 "버튼 7"을 누르면, 출력 레이블에 입력되도록 C# 소스코드를 구현합니다.
![](https://blog.kakaocdn.net/dn/bOeuxZ/btsJ5oiTLjO/tKA8RAA11JUArqU1AHklN0/img.png)
❹ 버튼이 클릭되었을 때, 실행될 함수의 로직은, 결과를 출력하는 레이블에 값이 0이라면, 해당 버튼의 숫자를 출력하고, 기존에 값이 입력되어 있다면, 기존 값 뒤에 버튼의 값을 추가하여 보여줍니다.
if (resultLabel.Content.ToString() == "0")
{
resultLabel.Content = "7";
}
else
{
resultLabel.Content = $"{resultLabel.Content}7";
}
01.4 "버튼 8", "버튼 9" 도 동일한 작업을 진행합니다.
![](https://blog.kakaocdn.net/dn/b0FUCy/btsJ7SibpfS/2tac1knB2AaOpaqKcWmFV0/img.png)
01.5 실행하여, 동작을 확인합니다.
02. 숫자 입력 버튼 이벤트 핸들러 개선(1)
02.1 문제 인식
위 숫자 버튼의 입력을 구현하는 과정은 동일하게 9번 반복 구현되어야 합니다.
숫자 버튼 9개는 모두 동일한 동작을 수행합니다.
= 함수의 로직이 같습니다.
= 데이터만 다릅니다.
= 하나의 함수로 수정 가능합니다.
02.2 이벤트 로직 수정
![](https://blog.kakaocdn.net/dn/CMWuO/btsJ6juzYUu/jNg7seHnbxkn3oA5BNAebK/img.png)
private void NumberButton_Click(object sender, RoutedEventArgs e)
{
int selectedBtnValue = 0;
if (sender == zeroButton)
selectedBtnValue = 0;
else if (sender == oneButton)
selectedBtnValue = 1;
else if (sender == twoButton)
selectedBtnValue = 2;
else if (sender == threeButton)
selectedBtnValue = 3;
else if (sender == fourButton)
selectedBtnValue = 4;
else if (sender == fiveButton)
selectedBtnValue = 5;
else if (sender == sixButton)
selectedBtnValue = 6;
else if (sender == sevenButton)
selectedBtnValue = 7;
else if (sender == eightButton)
selectedBtnValue = 8;
else if (sender == nineButton)
selectedBtnValue = 9;
if (resultLabel.Content.ToString() == "0")
{
resultLabel.Content = $"{selectedBtnValue}";
}
else
{
resultLabel.Content = $"{resultLabel.Content}{selectedBtnValue}";
}
}
02.3 UI 컨트롤의 참조 이벤트 수정
![](https://blog.kakaocdn.net/dn/bjj3zY/btsJ7cO605P/WJ1UtROtJU0w2NDd0slgX0/img.png)
❶ 각각의 버튼은 각각의 이벤트 핸들러 함수로 구현되어 있습니다.
![](https://blog.kakaocdn.net/dn/cWnNIl/btsJ7pN96rd/Sz4ecAt5DHjdnI5ZFwc161/img.png)
❷ Code behind에 구현한 이벤트 핸들러 함수로 참조를 변경합니다.
02.4 실행하여, 동작을 확인합니다.
03. 숫자 입력 버튼 이벤트 핸들러 개선(2)
03.1
![](https://blog.kakaocdn.net/dn/b0R1Q4/btsJ6EZBLTx/iNkZG5AaDw9RP8irY7OQNK/img.png)
private void NumberButton_Click2(object sender, RoutedEventArgs e)
{
//Sender 객체가 버튼인 경우, 버튼 객체에 .(닷 연산자)를 사용해 컨텐츠 속성을 가져와 int로 변환 후 저장
//_ diacard 변수는 값을 반환하더라도, 사용할 일이 없기에 안전하게 버려도 됨을 나타낸다.
_ = int.TryParse(((Button)sender).Content.ToString(), out int selectedBtnValue);
if (resultLabel.Content.ToString() == "0")
{
resultLabel.Content = $"{selectedBtnValue}";
}
else
{
resultLabel.Content = $"{resultLabel.Content}{selectedBtnValue}";
}
}
![](https://blog.kakaocdn.net/dn/KfRm0/btsJ7uWemDQ/Qq6Gutm76zBTNTUZ4QLgok/img.png)
❷ Code behind에 구현한 이벤트 핸들러 함수로 참조를 변경합니다.
03.2 실행하여, 동작을 확인합니다.
04. 실행 결과 확인