Windows Forms의 마우스 이벤트

마우스 입력을 처리하는 경우 일반적으로 마우스 포인터의 위치와 마우스 단추의 상태를 알아야 합니다. 이 항목에서는 마우스 이벤트에서 이 정보를 가져오는 방법을 자세히 설명하고 Windows Forms 컨트롤에서 마우스 클릭 이벤트가 발생하는 순서를 설명합니다. 모든 마우스 이벤트의 목록 및 설명은 Windows Forms에서 마우스 입력이 작동하는 방식을 참조하세요. 이벤트 처리기 개요(Windows Forms)이벤트 개요(Windows Forms)를 참조하세요.

마우스 정보

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 이벤트

마우스 클릭 이벤트 순서를 보여 주는 코드 예제는 방법: Windows Forms 컨트롤에서 사용자 입력 이벤트 처리를 참조하세요.

개별 컨트롤

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

토글 컨트롤의 그리기 동작

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

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

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

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

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

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

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

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

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

    참고

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

참고 항목