다음을 통해 공유


Windows Forms에서 마우스 입력이 작동하는 방식

마우스 입력 수신 및 처리는 모든 Windows 애플리케이션의 중요한 부분입니다. 마우스 이벤트를 처리하여 애플리케이션에서 작업을 수행하거나, 마우스 위치 정보를 사용하여 적중 테스트 또는 기타 작업을 수행할 수 있습니다. 또한 애플리케이션의 컨트롤이 마우스 입력을 처리하는 방법을 변경할 수 있습니다. 이 항목에서는 관련 마우스 이벤트를 자세히 설명하고 마우스의 시스템 설정을 가져오고 변경하는 방법을 설명합니다. 마우스 이벤트로 제공되는 데이터와 마우스 클릭 이벤트가 발생하는 순서에 관한 자세한 내용은 Windows Forms의 마우스 이벤트를 참조하세요.

마우스 위치 및 적중 테스트

사용자가 마우스를 이동하면 운영 체제에서 마우스 포인터를 이동합니다. 마우스 포인터에는 운영 체제가 포인터 위치로 추적하고 인식하는 핫 스폿이라는 단일 픽셀이 포함됩니다. 사용자가 마우스를 이동하거나 마우스 단추를 누르면 HotSpot을 포함하는 Control이 해당하는 마우스 이벤트를 발생시킵니다. 마우스 이벤트를 처리할 때 MouseEventArgsLocation 속성을 사용하거나 Cursor 클래스의 Position 속성을 사용하여 현재 마우스 위치를 가져올 수 있습니다. 이후에 마우스 위치 정보를 사용하여 적중 테스트를 수행한 다음, 마우스 위치에 따라 작업을 수행할 수 있습니다. 적중 테스트 기능은 ListView, TreeView, MonthCalendarDataGridView 컨트롤과 같은 Windows Forms의 여러 컨트롤에 기본 제공됩니다. MouseHover와 같은 해당 마우스 이벤트에서 사용되는 적중 테스트는 애플리케이션이 특정 작업을 수행해야 하는 시기를 결정하는 데 매우 유용합니다.

마우스 이벤트

마우스 입력에 응답하는 기본 방법은 마우스 이벤트를 처리하는 것입니다. 다음 표에서는 마우스 이벤트를 보여 주고 해당 이벤트가 발생하는 경우를 설명합니다.

마우스 이벤트 Description
Click 이 이벤트는 마우스 단추를 놓을 때, 일반적으로 MouseUp 이벤트 전에 발생합니다. 이 이벤트의 처리기는 EventArgs 형식의 인수를 받습니다. 클릭이 발생하는 시기를 확인해야 하는 경우에만 이 이벤트를 처리합니다.
MouseClick 이 이벤트는 사용자가 마우스로 컨트롤을 클릭할 때 발생합니다. 이 이벤트의 처리기는 MouseEventArgs 형식의 인수를 받습니다. 클릭이 발생할 때 마우스 관련 정보를 가져와야 하는 경우 이 이벤트를 처리합니다.
DoubleClick 이 이벤트는 컨트롤을 두 번 클릭할 때 발생합니다. 이 이벤트의 처리기는 EventArgs 형식의 인수를 받습니다. 두 번 클릭이 발생하는 시기를 확인해야 하는 경우에만 이 이벤트를 처리합니다.
MouseDoubleClick 이 이벤트는 사용자가 마우스로 컨트롤을 두 번 클릭할 때 발생합니다. 이 이벤트의 처리기는 MouseEventArgs 형식의 인수를 받습니다. 두 번 클릭이 발생할 때 마우스 관련 정보를 가져와야 하는 경우 이 이벤트를 처리합니다.
MouseDown 이 이벤트는 마우스 포인터가 컨트롤 위에 있고 사용자가 마우스 단추를 누를 때 발생합니다. 이 이벤트의 처리기는 MouseEventArgs 형식의 인수를 받습니다.
MouseEnter 이 이벤트는 컨트롤 형식에 따라 마우스 포인터가 컨트롤의 테두리 또는 클라이언트 영역에 들어갈 때 발생합니다. 이 이벤트의 처리기는 EventArgs 형식의 인수를 받습니다.
MouseHover 이 이벤트는 마우스 포인터가 중지하고 컨트롤 위에 있을 때 발생합니다. 이 이벤트의 처리기는 EventArgs 형식의 인수를 받습니다.
MouseLeave 이 이벤트는 컨트롤 형식에 따라 마우스 포인터가 컨트롤의 테두리 또는 클라이언트 영역을 벗어날 때 발생합니다. 이 이벤트의 처리기는 EventArgs 형식의 인수를 받습니다.
MouseMove 이 이벤트는 마우스 포인터가 컨트롤 위에 있는 동안 이동할 때 발생합니다. 이 이벤트의 처리기는 MouseEventArgs 형식의 인수를 받습니다.
MouseUp 이 이벤트는 마우스 포인터가 컨트롤 위에 있고 사용자가 마우스 단추를 놓을 때 발생합니다. 이 이벤트의 처리기는 MouseEventArgs 형식의 인수를 받습니다.
MouseWheel 이 이벤트는 컨트롤에 포커스가 있는 동안 사용자가 마우스 휠을 회전할 때 발생합니다. 이 이벤트의 처리기는 MouseEventArgs 형식의 인수를 받습니다. MouseEventArgsDelta 속성을 사용하여 마우스가 스크롤된 범위를 확인할 수 있습니다.

마우스 입력 변경 및 시스템 설정 검색

컨트롤에서 파생하고 GetStyleSetStyle 메서드를 사용하여 컨트롤이 마우스 입력을 처리하는 방법을 검색하고 변경할 수 있습니다. SetStyle 메서드는 ControlStyles 값의 비트 조합을 사용하여 컨트롤이 표준 클릭 또는 두 번 클릭 동작을 포함하는지 또는 컨트롤이 자체 마우스 처리를 수행하는지를 결정합니다. 또한 SystemInformation 클래스에는 마우스의 기능을 설명하고 마우스가 운영 체제와 상호 작용하는 방법을 지정하는 속성이 포함됩니다. 다음 표에는 해당 속성이 요약되어 있습니다.

속성 Description
DoubleClickSize 운영 체제가 두 번 클릭을 두 번 클릭으로 간주하도록 사용자가 두 번 클릭해야 하는 영역의 크기(픽셀)를 가져옵니다.
DoubleClickTime 운영 체제가 마우스 작업을 두 번 클릭으로 간주하도록 첫 클릭과 두 번째 클릭 사이에 경과할 수 있는 최대 시간(밀리초)을 가져옵니다.
MouseButtons 마우스의 단추 수를 가져옵니다.
MouseButtonsSwapped 마우스 왼쪽 단추와 오른쪽 단추의 기능이 바뀌었는지 여부를 나타내는 값을 가져옵니다.
MouseHoverSize 마우스 호버 메시지가 생성되기 전에 마우스 포인터가 마우스 호버 시간 동안 머물러야 하는 사각형의 크기를 픽셀 단위로 가져옵니다.
MouseHoverTime 마우스 호버 메시지가 생성되기 전에 마우스 포인터가 호버 사각형에 머물러야 하는 시간을 밀리초 단위로 가져옵니다.
MousePresent 마우스 설치 여부를 나타내는 값을 가져옵니다.
MouseSpeed 현재 마우스 속도를 나타내는 값(1~20)을 가져옵니다.
MouseWheelPresent 휠 마우스가 설치되어 있는지 여부를 나타내는 값을 가져옵니다.
MouseWheelScrollDelta 단일 마우스 휠 회전 증가의 델타 값 크기를 가져옵니다.
MouseWheelScrollLines 마우스 휠을 돌릴 때 스크롤되는 줄 수를 가져옵니다.

참고 항목