마우스 포인터 관리(Windows Forms .NET)

커서라고도 하는 마우스 ‘포인터’는 마우스를 사용한 사용자 입력 화면에서 포커스 지점을 지정하는 비트맵입니다. 이 항목에서는 Windows Forms의 마우스 포인터를 간략하게 설명하고, 마우스 포인터를 수정 및 제어하는 몇 가지 방법을 설명합니다.

중요

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

마우스 포인터에 액세스

마우스 포인터는 Cursor 클래스로 표시되며, 각 Control에 해당 컨트롤의 포인터를 지정하는 Control.Cursor 속성이 있습니다. Cursor 클래스에는 포인터를 설명하는 속성(예: PositionHotSpot 속성)과 포인터 모양을 수정할 수 있는 메서드(예: Show, Hide, DrawStretched 메서드)가 포함되어 있습니다.

다음 예제에서는 커서가 단추 위에 있을 때 커서를 숨깁니다.

private void button1_MouseEnter(object sender, EventArgs e) =>
    Cursor.Hide();

private void button1_MouseLeave(object sender, EventArgs e) =>
    Cursor.Show();
Private Sub Button1_MouseEnter(sender As Object, e As EventArgs) Handles Button1.MouseEnter
    Cursor.Hide()
End Sub

Private Sub Button1_MouseLeave(sender As Object, e As EventArgs) Handles Button1.MouseLeave
    Cursor.Show()
End Sub

마우스 포인터 제어

마우스 포인터를 사용할 수 있는 영역을 제한하거나 마우스 위치를 변경하려는 경우도 있습니다. CursorPosition 속성을 사용하여 마우스의 현재 위치를 가져오거나 설정할 수 있습니다. 또한 Clip 속성을 설정하여 마우스 포인터를 사용할 수 있는 영역을 제한할 수 있습니다. 기본적으로 클립 영역은 전체 화면입니다.

다음 예제에서는 두 단추를 클릭할 때 단추 사이에 마우스 포인터를 놓습니다.

private void button1_Click(object sender, EventArgs e) =>
    Cursor.Position = PointToScreen(button2.Location);

private void button2_Click(object sender, EventArgs e) =>
    Cursor.Position = PointToScreen(button1.Location);
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    PointToScreen(Button2.Location)
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    PointToScreen(Button1.Location)
End Sub

마우스 포인터 변경

마우스 포인터 변경은 사용자에게 피드백을 제공하는 중요한 방법입니다. 예를 들어 MouseEnterMouseLeave 이벤트 처리기에서 마우스 포인터를 수정하여 사용자에게 계산이 수행됨을 알리고 컨트롤의 사용자 조작을 제한할 수 있습니다. 애플리케이션이 끌어서 놓기 작업과 관련된 경우와 같이 시스템 이벤트로 인해 마우스 포인터가 변경되는 경우도 있습니다.

마우스 포인터를 변경하는 기본 방법은 컨트롤의 Control.Cursor 또는 DefaultCursor 속성을 새 Cursor로 설정하는 것입니다. 마우스 포인터 변경 예제는 Cursor 클래스의 코드 예제를 참조하세요. 또한 Cursors 클래스는 손 모양 포인터와 같은 다양한 형식의 포인터를 위해 Cursor 개체 세트를 공개합니다.

다음 예제에서는 단추의 마우스 포인터 커서를 손 모양으로 변경합니다.

button2.Cursor = System.Windows.Forms.Cursors.Hand;
Button2.Cursor = System.Windows.Forms.Cursors.Hand

마우스 포인터가 컨트롤 위에 있을 때마다 모래 시계와 유사한 대기 포인터를 표시하려면 Control 클래스의 UseWaitCursor 속성을 사용합니다.

참고 항목