* 마우스 이벤트
- NameSpace: System.WIndows.Input
- 상속: Object > Mouse
- 이벤트 발생 순서(클릭 동작 기준)
1. MouseDown: 사용자가 마우스 단추를 누를 때 발생
2. MouseUp: 사용자가 마우스 단추를 놓을 때 발생
- 기타 이벤트
- MouseEnter: 마우스 포인터가 컨트롤의 영역 내로 들어갈 때 발생
- MouseLeave: 마우스 포인터가 컨트롤의 영역 내에서 벗어날 때 발생
- MouseMove: 컨트롤 위에서 마우스 포인터를 움직이면 발생
- MouseWheel: 마우스 휠이 회전할 때 발생
- GotMouseCapture: 컨트롤에서 마우스를 캡처할 때 발생
- LostMouseCapture: 컨트롤에서 마우스 캡처를 잃을 때 발생
* Preview 이벤트
- 이벤트 호출 방식의 일종
- 라우팅된 이벤트가 등록된 모든 객체의 이벤트 핸들러르 호출하는 방식
- 종류
ㄴ 버블링
- 이벤트가 발생된 객체에서 최상위 객체까지 탐색하며 이벤트 핸들러를 호출
- Preview 접두어 사용. ex. PreviewMouseDown PreviewMouseUp. PreviewMouseEnter
- 최상위 객체 (StackPanel) > 객체2 (Canvas) > 객체3 (Button)
ㄴ 터널링
- 최상위 객체에서 이벤트가 발생된 객체까지 탐색하며 이벤트 핸들러를 호출
- 최상위 객체 (StackPanel) < 객체2 (Canvas) < 객체3 (Button)
ㄴ 직접 전달
- Winform과 유사하게 특정 이벤트만 호출
- 최상위 객체 (StackPanel)
ㄴ 객체2 (Canvas)
ㄴ 객체3 (Button) ——> 호출
* 이벤트 데이터 구조
ㄴ MouseEnter, MouseLeave, MouseMove, GetMouseCapture, LostMouseCapture
ㄴ MouseDown, MouseUp
ㄴ MouseWheel
* 이벤트 데이터
- Object > EventArgs > RoutedEventArgs > InputEventArgs > MouseEventArgs
- EventArgs
- 이벤트 데이터를 포함하지 않는 이벤트에 사용할 데이터
- 터널링/버블링을 위한 이벤트 데이터
- 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 | 마우스 휠이 변경된 양 |
'C# > WPF' 카테고리의 다른 글
C# WPF 지정된 Visual이 이미 다른 Visual의 자식이거나 CompositionTarget의 루트입니다 (0) | 2021.10.25 |
---|---|
C# Thread Dispatcher (Cross Thread 방지) (0) | 2021.07.21 |
WPF 지정한 요소가 이미 다른 요소의 논리자식입니다. 먼저 이 연결을 끊으십시오. (2) | 2020.03.27 |