01. 숫자 입력 버튼 7, 8, 9 구현

더보기

01.1  버튼 7, 버튼 8, 버튼 9 입력을 구현합니다.

 

 

01.2 "버튼 7" 컨트롤의 이벤트를 생성하기 위해 버튼 컨트롤을 더블클릭합니다.

 

 

01.3 "버튼 7" 컨트롤의 이벤트가 Code behind에 sevenButton_Click 이벤트가 자동 생성됩니다.

 

 

01.4  "버튼 7"을 누르면, 출력 레이블에 입력되도록 C# 소스코드를 구현합니다.

버튼이 클릭되었을 때, 실행될 함수의 로직은, 결과를 출력하는 레이블에 값이 0이라면, 해당 버튼의 숫자를 출력하고, 기존에 값이 입력되어 있다면, 기존 값 뒤에 버튼의 값을 추가하여 보여줍니다.

            if (resultLabel.Content.ToString() == "0")
            {
                resultLabel.Content = "7";
            }
            else
            {
                resultLabel.Content = $"{resultLabel.Content}7";
            }

 

 

01.4  "버튼 8", "버튼 9" 도 동일한 작업을 진행합니다.

 

 

01.5 실행하여, 동작을 확인합니다.

 

02. 숫자 입력 버튼 이벤트 핸들러 개선(1)

더보기

02.1 문제 인식

위 숫자 버튼의 입력을 구현하는 과정은 동일하게 9번 반복 구현되어야 합니다.

 

숫자 버튼 9개는 모두 동일한 동작을 수행합니다. 

= 함수의 로직이 같습니다.

= 데이터만 다릅니다.

= 하나의 함수로 수정 가능합니다.

 

 

02.2 이벤트 로직 수정

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 컨트롤의 참조 이벤트 수정

각각의 버튼은 각각의 이벤트 핸들러 함수로 구현되어 있습니다.

 

 

Code behind에 구현한 이벤트 핸들러 함수로 참조를 변경합니다.

  

 


02.4 실행하여, 동작을 확인합니다.


03. 숫자 입력 버튼 이벤트 핸들러 개선(2)

더보기

03.1

        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}";
            }
        }

 

 

 Code behind에 구현한 이벤트 핸들러 함수로 참조를 변경합니다.

 

 

03.2 실행하여, 동작을 확인합니다.

 

04. 실행 결과 확인