마우스 사용 개요(Windows Forms .NET)
마우스 입력 수신 및 처리는 모든 Windows 애플리케이션의 중요한 부분입니다. 마우스 이벤트를 처리하여 애플리케이션에서 작업을 수행하거나, 마우스 위치 정보를 사용하여 적중 테스트 또는 기타 작업을 수행할 수 있습니다. 또한 애플리케이션의 컨트롤이 마우스 입력을 처리하는 방법을 변경할 수 있습니다. 이 문서에서는 관련 마우스 이벤트를 자세히 설명하고 마우스의 시스템 설정을 가져오고 변경하는 방법을 설명합니다.
중요
.NET 7 및 .NET 6에 관한 데스크톱 가이드 설명서는 제작 중입니다.
Windows Forms에서 사용자 입력은 Windows 메시지 형식으로 애플리케이션에 전송됩니다. 일련의 재정의 가능한 메서드는 애플리케이션, 양식 및 컨트롤 수준에서 해당 메시지를 처리합니다. 해당 메서드는 마우스 메시지를 수신하면 처리할 수 있는 이벤트를 발생시켜 마우스 입력 정보를 가져옵니다. 대부분의 경우 Windows Forms 애플리케이션은 해당 이벤트를 처리하여 모든 사용자 입력을 처리할 수 있습니다. 다른 경우에는 애플리케이션이 메시지를 처리하는 메서드 중 하나를 재정의하여 애플리케이션, 양식 또는 컨트롤이 메시지를 수신하기 전에 특정 메시지를 가로챌 수도 있습니다.
마우스 이벤트
모든 Windows Forms 컨트롤은 마우스 및 키보드 입력과 관련된 이벤트 세트를 상속합니다. 예를 들어 컨트롤은 MouseClick 이벤트를 처리하여 마우스 클릭 위치를 확인할 수 있습니다. 마우스 이벤트에 관한 자세한 내용은 마우스 이벤트 사용을 참조하세요.
마우스 위치 및 적중 테스트
사용자가 마우스를 이동하면 운영 체제에서 마우스 포인터를 이동합니다. 마우스 포인터에는 운영 체제가 포인터 위치로 추적하고 인식하는 핫 스폿이라는 단일 픽셀이 포함됩니다. 사용자가 마우스를 이동하거나 마우스 단추를 누르면 HotSpot을 포함하는 Control이 해당하는 마우스 이벤트를 발생시킵니다.
마우스 이벤트를 처리할 때 MouseEventArgs의 Location 속성을 사용하거나 Cursor 클래스의 Position 속성을 사용하여 현재 마우스 위치를 가져올 수 있습니다. 그런 다음, 마우스 위치 정보를 사용하여 적중 테스트를 수행하고 마우스 위치에 따라 작업을 수행할 수 있습니다. 적중 테스트 기능은 ListView, TreeView, MonthCalendar 및 DataGridView 컨트롤과 같은 Windows Forms의 여러 컨트롤에 기본 제공됩니다.
MouseHover와 같은 해당 마우스 이벤트에서 사용되는 적중 테스트는 애플리케이션이 특정 작업을 수행해야 하는 시기를 결정하는 데 매우 유용합니다.
마우스 입력 설정 변경
컨트롤에서 파생하고 GetStyle 및 SetStyle 메서드를 사용하여 컨트롤이 마우스 입력을 처리하는 방법을 검색하고 변경할 수 있습니다. SetStyle 메서드는 ControlStyles 값의 비트 조합을 사용하여 컨트롤이 표준 클릭, 두 번 클릭 동작을 포함하는지 또는 컨트롤이 자체 마우스 처리를 수행하는지를 결정합니다. 또한 SystemInformation 클래스에는 마우스의 기능을 설명하고 마우스가 운영 체제와 상호 작용하는 방법을 지정하는 속성이 포함됩니다. 다음 표에는 해당 속성이 요약되어 있습니다.
속성 | Description |
---|---|
DoubleClickSize | 운영 체제가 두 번 클릭을 두 번 클릭으로 간주하도록 사용자가 두 번 클릭해야 하는 영역의 크기(픽셀)를 가져옵니다. |
DoubleClickTime | 마우스 작업을 두 번 클릭으로 간주하도록 첫 클릭과 두 번째 클릭 사이에 경과할 수 있는 최대 시간(밀리초)을 가져옵니다. |
MouseButtons | 마우스의 단추 수를 가져옵니다. |
MouseButtonsSwapped | 마우스 왼쪽 단추와 오른쪽 단추의 기능이 바뀌었는지 여부를 나타내는 값을 가져옵니다. |
MouseHoverSize | 마우스 호버 메시지가 생성되기 전에 마우스 포인터가 마우스 호버 시간 동안 머물러야 하는 사각형의 크기를 픽셀 단위로 가져옵니다. |
MouseHoverTime | 마우스 호버 메시지가 생성되기 전에 마우스 포인터가 호버 사각형에 머물러야 하는 시간을 밀리초 단위로 가져옵니다. |
MousePresent | 마우스 설치 여부를 나타내는 값을 가져옵니다. |
MouseSpeed | 현재 마우스 속도를 나타내는 값(1~20)을 가져옵니다. |
MouseWheelPresent | 휠 마우스가 설치되어 있는지 여부를 나타내는 값을 가져옵니다. |
MouseWheelScrollDelta | 단일 마우스 휠 회전 증가의 델타 값 크기를 가져옵니다. |
MouseWheelScrollLines | 마우스 휠을 돌릴 때 스크롤되는 줄 수를 가져옵니다. |
사용자 입력 메시지를 처리하는 메서드
양식 및 컨트롤은 메시지 큐의 서로 다른 지점에서 Windows 메시지를 처리하는 재정의 가능한 메서드 세트와 IMessageFilter 인터페이스에 액세스할 수 있습니다. 해당 메서드에는 모두 Windows 메시지의 하위 수준 세부 정보를 캡슐화하는 Message 매개 변수가 있습니다. 해당 메서드를 구현하거나 재정의하여 메시지를 검사한 다음, 메시지를 사용하거나 메시지 큐로 다음 소비자에게 전달할 수 있습니다. 다음 표는 Windows Forms의 모든 Windows 메시지를 처리하는 메서드를 제공합니다.
메서드 | 참고 |
---|---|
PreFilterMessage | 이 메서드는 애플리케이션 수준에서 큐에 있는(게시된) Windows 메시지를 가로챕니다. |
PreProcessMessage | 이 메서드는 처리되기 전에 양식 및 컨트롤 수준에서 Windows 메시지를 가로챕니다. |
WndProc | 이 메서드는 양식 및 컨트롤 수준에서 Windows 메시지를 처리합니다. |
DefWndProc | 이 메서드는 양식 및 컨트롤 수준에서 Windows 메시지의 기본 처리를 수행합니다. 창의 최소 기능을 제공합니다. |
OnNotifyMessage | 이 메서드는 처리된 후 양식 및 컨트롤 수준에서 메시지를 가로챕니다. 해당 메서드를 호출하려면 EnableNotifyMessage 스타일 비트를 설정해야 합니다. |
참고 항목
.NET Desktop feedback
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기