728x90

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에 구현한 NumberButton_Click 이벤트 핸들러 함수로

click 이벤트의 참조를 변경합니다.

  

 


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. 실행 결과 확인