마우스 이벤트 사용(Windows Forms .NET)

대부분 Windows Forms 프로그램에서는 마우스 이벤트를 처리하는 방식으로 마우스 입력을 처리합니다. 이 문서에서는 각 이벤트를 사용하는 시기 및 각 이벤트에 대해 제공되는 데이터에 대한 세부 정보를 포함하여 마우스 이벤트의 개요를 제공합니다. 일반적인 이벤트 관련 세부 내용은 이벤트 개요(Windows Forms .NET)를 참조하세요.

중요

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

마우스 이벤트

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

마우스 이벤트 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 속성을 사용하여 마우스가 스크롤된 범위를 확인할 수 있습니다.

마우스 정보

MouseEventArgs는 마우스 단추 클릭 및 마우스 움직임 추적과 관련된 마우스 이벤트 처리기로 전송됩니다. MouseEventArgs는 클라이언트 좌표에서 마우스 포인터의 위치, 누른 마우스 단추, 마우스 휠의 스크롤 여부를 포함하여 마우스의 현재 상태에 대한 정보를 제공합니다. 마우스 포인터가 컨트롤의 범위로 들어오거나 나갈 때 발생하는 이벤트와 같은 여러 마우스 이벤트가 추가 정보 없이 EventArgs를 이벤트 처리기로 보냅니다.

마우스 이벤트를 처리하지 않고 마우스 단추의 현재 상태나 마우스 포인터의 위치를 확인하려는 경우 Control 클래스의 MouseButtonsMousePosition 속성을 사용할 수도 있습니다. MouseButtons는 현재 누른 마우스 단추에 대한 정보를 반환합니다. MousePosition은 마우스 포인터의 화면 좌표를 반환하며 Position에서 반환되는 값과 같습니다.

화면 좌표와 클라이언트 좌표 간의 변환

일부 마우스 위치 정보는 클라이언트 좌표로 표시되고 일부 정보는 화면 좌표로 표시되므로 좌표계 간에 지점을 변환해야 할 수도 있습니다. Control 클래스에서 사용할 수 있는 PointToClientPointToScreen 메서드를 사용하면 이 작업을 쉽게 수행할 수 있습니다.

표준 클릭 이벤트 동작

마우스 클릭 이벤트를 적절한 순서로 처리하려는 경우 Windows Forms 컨트롤에서 클릭 이벤트가 발생하는 순서를 알아야 합니다. 개별 컨트롤에 대한 다음 목록에 명시된 경우를 제외하고 모든 Windows Forms 컨트롤은 지원되는 마우스 단추를 눌렀다 놓는 순서대로 클릭 이벤트를 발생시킵니다. 다음 목록에서는 마우스 단추 한 번 클릭에 대해 발생하는 이벤트 순서를 보여 줍니다.

  1. MouseDown 이벤트
  2. Click 이벤트
  3. MouseClick 이벤트
  4. MouseUp 이벤트

다음은 마우스 단추 두 번 클릭에 대해 발생하는 이벤트 순서입니다.

  1. MouseDown 이벤트

  2. Click 이벤트

  3. MouseClick 이벤트

  4. MouseUp 이벤트

  5. MouseDown 이벤트

  6. DoubleClick 이벤트

    해당 컨트롤의 StandardDoubleClick 스타일 비트가 true로 설정되었는지에 따라 달라질 수 있습니다. ControlStyles를 설정하는 방법에 관한 자세한 내용은 SetStyle 메서드를 참조하세요.

  7. MouseDoubleClick 이벤트

  8. MouseUp 이벤트

개별 컨트롤

다음 컨트롤은 표준 마우스 클릭 이벤트 동작을 따르지 않습니다.

토글 컨트롤의 그리기 동작

ButtonBase 클래스에서 파생되는 컨트롤과 같은 토글 컨트롤은 마우스 클릭 이벤트와 결합되어 다음과 같은 고유한 그리기 동작을 제공합니다.

  1. 사용자가 마우스 단추를 누릅니다.

  2. 컨트롤이 눌린 상태로 그려집니다.

  3. MouseDown 이벤트가 발생합니다.

  4. 사용자가 마우스 단추를 놓습니다.

  5. 컨트롤이 올려진 상태로 그려집니다.

  6. Click 이벤트가 발생합니다.

  7. MouseClick 이벤트가 발생합니다.

  8. MouseUp 이벤트가 발생합니다.

    참고

    사용자가 마우스 단추를 누른 동안 토글 컨트롤에서 포인터를 이동하는 경우(예: 누른 동안 Button 컨트롤에서 마우스 이동) 토글 컨트롤이 올려진 상태로 그려지고 MouseUp 이벤트만 발생합니다. 이런 상황에서는 Click 또는 MouseClick 이벤트가 발생하지 않습니다.

참고 항목