마우스 사용 개요(Windows Forms .NET)

마우스 입력 수신 및 처리는 모든 Windows 애플리케이션의 중요한 부분입니다. 마우스 이벤트를 처리하여 애플리케이션에서 작업을 수행하거나, 마우스 위치 정보를 사용하여 적중 테스트 또는 기타 작업을 수행할 수 있습니다. 또한 애플리케이션의 컨트롤이 마우스 입력을 처리하는 방법을 변경할 수 있습니다. 이 문서에서는 관련 마우스 이벤트를 자세히 설명하고 마우스의 시스템 설정을 가져오고 변경하는 방법을 설명합니다.

중요

.NET 7 및 .NET 6에 관한 데스크톱 가이드 설명서는 제작 중입니다.

Windows Forms에서 사용자 입력은 Windows 메시지 형식으로 애플리케이션에 전송됩니다. 일련의 재정의 가능한 메서드는 애플리케이션, 양식 및 컨트롤 수준에서 해당 메시지를 처리합니다. 해당 메서드는 마우스 메시지를 수신하면 처리할 수 있는 이벤트를 발생시켜 마우스 입력 정보를 가져옵니다. 대부분의 경우 Windows Forms 애플리케이션은 해당 이벤트를 처리하여 모든 사용자 입력을 처리할 수 있습니다. 다른 경우에는 애플리케이션이 메시지를 처리하는 메서드 중 하나를 재정의하여 애플리케이션, 양식 또는 컨트롤이 메시지를 수신하기 전에 특정 메시지를 가로챌 수도 있습니다.

마우스 이벤트

모든 Windows Forms 컨트롤은 마우스 및 키보드 입력과 관련된 이벤트 세트를 상속합니다. 예를 들어 컨트롤은 MouseClick 이벤트를 처리하여 마우스 클릭 위치를 확인할 수 있습니다. 마우스 이벤트에 관한 자세한 내용은 마우스 이벤트 사용을 참조하세요.

마우스 위치 및 적중 테스트

사용자가 마우스를 이동하면 운영 체제에서 마우스 포인터를 이동합니다. 마우스 포인터에는 운영 체제가 포인터 위치로 추적하고 인식하는 핫 스폿이라는 단일 픽셀이 포함됩니다. 사용자가 마우스를 이동하거나 마우스 단추를 누르면 HotSpot을 포함하는 Control이 해당하는 마우스 이벤트를 발생시킵니다.

마우스 이벤트를 처리할 때 MouseEventArgsLocation 속성을 사용하거나 Cursor 클래스의 Position 속성을 사용하여 현재 마우스 위치를 가져올 수 있습니다. 그런 다음, 마우스 위치 정보를 사용하여 적중 테스트를 수행하고 마우스 위치에 따라 작업을 수행할 수 있습니다. 적중 테스트 기능은 ListView, TreeView, MonthCalendarDataGridView 컨트롤과 같은 Windows Forms의 여러 컨트롤에 기본 제공됩니다.

MouseHover와 같은 해당 마우스 이벤트에서 사용되는 적중 테스트는 애플리케이션이 특정 작업을 수행해야 하는 시기를 결정하는 데 매우 유용합니다.

마우스 입력 설정 변경

컨트롤에서 파생하고 GetStyleSetStyle 메서드를 사용하여 컨트롤이 마우스 입력을 처리하는 방법을 검색하고 변경할 수 있습니다. 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 스타일 비트를 설정해야 합니다.

참고 항목