본문 바로가기

C# WPF

Event Handler

마우스를 움직이거나 클릭할 때, 키보드가 눌렸을 때 등 사용자의 입력에 따라 이벤트가 발생한다. 특정 이벤트가 발생하는 것에 따라 자동으로 호출되어 실행되는 함수를 이벤트 처리함수 또는 이벤트 핸들러(Event Handler)라고 한다.

아래의 예는 윈도우 창에서 마우스가 눌려졌을 때 그것이 왼쪽 버튼인지 오른쪽 버튼인지와 마우스가 눌려진 좌표를 콘솔 창에 출력해주는 프로그램이다.

마우스가 눌려졌을 때 처리되는 이벤트는 MouseDown 이벤트이다. 이를 처리하는 함수가 MouseDownHandler 이다. 

myWindow() 생성자 함수에서 이벤트 처리함수를 등록한다.

다음 그림과 같이 MouseDown+= 까지 입력하고 Tab을 누르면 이벤트처리함수를 자동으로 입력해준다. (물론 이벤트처리함수의 이름은 개발자 마음대로 다르게 만들어줘도 된다)

마우스의 이벤트를 입력으로 처리해야 하므로 using System.Windows.Input; 을 추가해준다.

 

Tab을 눌러 삽입한 myWIndow_MouseDown 위에 마우스 오른쪽 버튼을 누르고 생성->메서드 스텁을 선택하면 다음과 같이 자동으로 함수를 삽입해준다.

 

 

여기에서 throw new NotImplemetedException(); 을 지우고 이 부분에 원하는 처리 함수를 다음과 같이 코딩하면 된다.

 

     private void myWindow_MouseDown(object sender, MouseButtonEventArgs e)
     {
            Window win = sender as Window;
            string s;

            if (e.ChangedButton == MouseButton.Left) s = "왼쪽";
            else if (e.ChangedButton == MouseButton.Right) s = "오른쪽";
            else s = "알 수 없는";

            Console.WriteLine("{0} 버튼을 위치 {1}에서 눌렀습니다", s, e.GetPosition(win));
     }

프로그램을 실행하면 윈도우에서 마우스를 클릭하면 콘솔창에 다음과 같이 출력된다. 여기서 e.GetPosition(win) 은 win 에서의 좌표(win의 제일 왼쪽 위들 0,0으로 한 좌표) 값을 return 해준다.

 

 

완성된 코드의 모습은 다음과 같다.

 

BeeEye 드무

 

'C# WPF' 카테고리의 다른 글

콘트롤의 처리  (0) 2013.07.07
Event Handler 2  (0) 2013.07.07
상속에 의한 윈도우 생성(2)  (0) 2013.07.07
상속에 의한 윈도우 생성  (0) 2013.07.07
Window 객체 생성함수 사용하기  (0) 2013.07.07