C#/WPF

WPF 마우스 이벤트

백엔드담당자 2020. 9. 3. 23:31
반응형

* 마우스 이벤트

- NameSpace: System.WIndows.Input

- 상속: Object > Mouse


- 이벤트 발생 순서(클릭 동작 기준)

  1. MouseDown: 사용자가 마우스 단추를 누를 때 발생

  2. MouseUp: 사용자가 마우스 단추를 놓을 때 발생


- 기타 이벤트

  - MouseEnter: 마우스 포인터가 컨트롤의 영역 내로 들어갈 때 발생

  - MouseLeave: 마우스 포인터가 컨트롤의 영역 내에서 벗어날 때 발생

  - MouseMove: 컨트롤 위에서 마우스 포인터를 움직이면 발생

  - MouseWheel: 마우스 휠이 회전할 때 발생

  - GotMouseCapture: 컨트롤에서 마우스를 캡처할 때 발생

  - LostMouseCapture: 컨트롤에서 마우스 캡처를 잃을 때 발생

 

 

* Preview 이벤트

- 라우팅(Routing)

  - 이벤트 호출 방식의 일종

  - 라우팅된 이벤트가 등록된 모든 객체의 이벤트 핸들러르 호출하는 방식

- 종류

  ㄴ 버블링

    - 이벤트가 발생된 객체에서 최상위 객체까지 탐색하며 이벤트 핸들러를 호출

    - Preview 접두어 사용. 
ex. PreviewMouseDown PreviewMouseUp. PreviewMouseEnter

    - 최상위 객체 (StackPanel) > 객체2 (Canvas) > 객체3 (Button)

  ㄴ 터널링

    - 최상위 객체에서 이벤트가 발생된 객체까지 탐색하며 이벤트 핸들러를 호출

    - 최상위 객체 (StackPanel) < 객체2 (Canvas) < 객체3 (Button)

  ㄴ 직접 전달
    - Winform과 유사하게 특정 이벤트만 호출

    - 최상위 객체 (StackPanel)


       ㄴ 객체2 (Canvas)


           ㄴ 객체3 (Button) ——> 호출

 

 

* 이벤트 데이터 구조

- MouseEventArgs

  ㄴ MouseEnter, MouseLeave, MouseMove, GetMouseCapture, LostMouseCapture

- MouseButtonEventArgs

  ㄴ MouseDown, MouseUp

- MouseWheelEventArgs

  ㄴ MouseWheel

 


* 이벤트 데이터

- Object > EventArgs > RoutedEventArgs > InputEventArgs > MouseEventArgs

- EventArgs

   - 이벤트 데이터를 포함하지 않는 이벤트에 사용할 데이터

- RoutedEventArgs

   - 터널링/버블링을 위한 이벤트 데이터

- MouseEventAgrs

  - 마우스 관련 이벤트 데이터
  - 단, 마우스 단추나 마우스 휠과 관련된 정보 제외

- MouseButtonEventArgs

  - 마우스 단추 관련 이벤트 데이터

- MouseWheelEventArgs

  - 마우스 휠 관련 이벤트 데이터

 


* MouseButtonEventArgs / MouseWheelEventArgs

- 공통 Properties

InputEvent
Args 상속
Device 입력 디바이스 정보
Timestamp 이벤트 발생 시간
MouseEvent
Args 상속
LeftButton 마우스 왼쪽 버튼의 현재 상태 정보
MiddleButton 마우스 가운데 버튼의 현재 상태 정보
MouseDevice 마우스 디바이스 정보
RightButton 마우스 오른쪽 버튼의 현재 상태 정보
StylusDevice 스타일러스 디바이스 정보
XButton1 첫 번째로 확장된 마우스 단추의 현재 상태 정보
XButton2 두 번째로 확장된 마우스 단추의 현재 상태 정보
RoutedEvent
Args 상속
Handled 라우트된 이벤트의 현재 이벤트 처리 상태
Source 라우팅된 이벤트 중 이벤트를 발생시킨 객체
OriginalSource 라우팅된 이벤트 중 이벤트를 발생시킨 객체인 Source의 원본
다음 이벤트가 발생함에 따라 Source가 변경되더라도 보존되는 원본 Source
RoutedEvent RoutedEventArgs 인스턴스와 연결된 RoutedEvent 제어

- 개별 Properties

MouseButton
EventArgs
ButtonState 단추의 상태
ChangedButton 마우스 단추 정보
ClickCount 클릭 횟수
MouseWheel
EventArgs
Delta 마우스 휠이 변경된 양

 

반응형