01. 목표

더보기

01.1

"3.4 XAML - EventHandler" 에서 "WPF XAML 디자이너"를 활용해 UI 컨트롤의 이벤트를 구현했습니다.

이번에서는 WPF Code Behind(이하 C# 코드)를 활용하여 컨트롤의 이벤트를 구현합니다.

 

01.2

이전 포스트에서 작업했던 Calculator 예제를 이어갑니다. 

이전 포스트 작업물이 없다면, Calculator 예제를 다운받고 확인합니다.

 

5.1 Calculator 준비 예제.zip
0.22MB

 

 

02. 이벤트와 이벤트 핸들러

더보기

02.1 <CE 버튼> 속성 확인

*x:Name 프로퍼티는 객체 참조 필드를 생성하고, 컨트롤 식별자인 Name 속성과 맵핑하여 동일하게 사용하도록 합니다.

 

XAML에서 ce 버튼에 해당하는 컨트롤을 확인합니다. 

XAML에서 ce 버튼에 해당하는 컨트롤의 식별자(x:Name) 속성값은 “cdButton”로 정의되어 있습니다.

 

 

 

 

02.2 C# 코드에서 XAML 컨트롤 참조

MainWindow.xaml 의 Code Behind(C# 소스 코드)로 이동합니다. 

Code Behind(C# 소스 코드) 에서 MainWindow Class 의 생성자를 찾습니다. 

MainWindow Class 의 생성자 내부에 “ceButton” 이라는 식별자 일부를 입력해 봅니다. 

만약 키워드를 button 으로 입력했다면, button 이름 속성이 포함된 모든 컨트롤 리스트가 자동완성에 참조됩니다. 

ce 버튼 컨트롤을 선택합니다.

 

 

 

 

02.3 IntelliSense 자동완성 살펴보기

 

 

 


02.4 버튼 이벤트 구현

사용할 XAML 컨트롤의 이름을 선택하면, Code Behind(C# 소스 코드)에서 참조됩니다. 

참조한 “ceButton” 컨트롤에 .(도트 연산자)를 사용합니다. 

ceButton 컨트롤 객체에 사용 가능한 요소들이 자동완성 리스트에 보여집니다. 

Click 이벤트를 선택하고, 엔터를 입력합니다.

 

 

 

 

02.5 이벤트 핸들러 등록

ceButton 컨트롤의 click 이벤트에 이벤트 핸들러를 등록하기 위해 +=(복합 대입 연산자)를 추가합니다.

복합 대입 연산자를 입력하면, IntelliSense에서 추가할 이벤트 핸들러 이름을 자동으로 추천해줍니다.

복합 대입 연산자를 입력하고, <Tab> 키를 입력르면 자동으로 이벤트 헨들러가 등록 및 생성됩니다.

 

click 이벤트에 자동으로 이벤트 핸들러가 추가됩니다. 

이벤트 핸들러 이름은, “(XAML 컨트롤 이름)_Click” 규칙으로 구성됩니다.

이벤트에 자동 등록된 이벤트 핸들러 함수가 구현된 부분을 확인합니다. 

기본적으로 자동 완성된 이벤트 핸들러의 구현부는, 구현이 되지 않은 throw 가 일어나면 프로그램이 종료되도록 예외 처리되어 있기때문에, 구현부를 수정해야 합니다.

 

03. 이벤트 핸들러 로직 구현

더보기

03.1 레이블 초기 출력값 설정

레이블의 Content 속성에 값을 할당합니다. 

계산기 상단의 출력 결과값을 특정 숫자로 시작하도록 수정합니다.

 

 

 

 

03.2 이벤트 핸들러 구현

이벤트 핸들러 구현부에서 throw 명령부를 제거합니다. 

버튼에 대한 동작으로 레이블에 표시되는 값을 0으로 초기화되도록 구현합니다. 

계산기에서  AC(All Clear)의 의미는 전체 삭제입니다. 

CE(Clear Entry)의 의미는 마지막 입력 삭제입니다. 

여기에서는 간단히 입력된 내용을 0으로 초기화하는 기능으로 구현합니다. 

예) 기존 12345가 입력되어 있다면, 0으로 초기화합니다.

 

 

 

 

03.3 실행 결과 확인

 

04 Negative 버튼 구현

더보기

04.1 음수 버튼 이벤트, 이벤트 핸들러 구현

 

현재 프로젝트의 XAML 음수 버튼의 이름은 negativeButton 입니다. 

negativeButton 식별자에, 도트 연산자를 사용합니다. 

negativeButton이 사용 가능한 요소들이 자동완성 리스트에 보여집니다. 

Click 이벤트 요소를 선택하고 엔터를 눌러 자동 완성합니다. 

negativeButton.Click 이벤트에 +=(복합 대입 연산자) 를 입력합니다. 

복합 대입 연산자를 입력하면, IntelliSense에서 이벤트 핸들러의 이름을 자동으로 추천해줍니다.

<Tab>를 입력하면, 자동으로 이벤트 핸들러가 등록됩니다. 이벤트 핸들러 구현부가 자동완성됩니다.

 

 

 

 

04.2 음수 버튼 이벤트 핸들러 로직 구현

            if(double.TryParse(resultLabel.Content.ToString(), out lastNumber))
            {
                lastNumber = lastNumber * -1;
                resultLabel.Content = lastNumber.ToString();
            }

 

Double.TryParse 메서드 (System) | Microsoft Learn

 

Double.TryParse 메서드 (System)

숫자의 문자열 표현을 해당하는 배정밀도 부동 소수점 숫자로 변환합니다. 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.

learn.microsoft.com

 

05.  숫자 7 입력 버튼 구현

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

 

06. 기호 % 버튼 구현

더보기
            if (double.TryParse(resultLabel.Content.ToString(), out lastNumber))
            {
                lastNumber = lastNumber / 100;
                resultLabel.Content = lastNumber.ToString();
            }

 

07 실행 결과 확인