DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

マウスポインタの位置を取得、変更(移動)する

マウスポインタ(マウスカーソル)の位置を取得、変更(移動)するには、Cursor.Positionプロパティを使います。マウスポインタの位置の取得だけならば、Control.MousePositionプロパティでも可能です。

VB.NET
コードを隠すコードを選択
'マウスポインタの位置を取得する
'X座標を取得する
Dim x As Integer = System.Windows.Forms.Cursor.Position.X
'Y座標を取得する
Dim y As Integer = System.Windows.Forms.Cursor.Position.Y

'マウスポインタの位置を画面左上(座標 (0, 0))にする
System.Windows.Forms.Cursor.Position = New System.Drawing.Point(0, 0)
C#
コードを隠すコードを選択
//マウスポインタの位置を取得する
//X座標を取得する
int x = System.Windows.Forms.Cursor.Position.X;
//Y座標を取得する
int y = System.Windows.Forms.Cursor.Position.Y;

//マウスポインタの位置を画面左上(座標 (0, 0))にする
System.Windows.Forms.Cursor.Position = new System.Drawing.Point(0, 0);

フォームやコントロール上の座標で取得、設定する

Cursor.PositionやControl.MousePositionが返す座標は、画面座標です。そのため、画面上のどの位置にマウスポインタがあるかを示します。しかし、フォーム上のどの位置にマウスポインタがあるか知りたいというケースもあります。そのような場合は、Control.PointToClientメソッドを使って、画面座標をフォームのクライアント座標に変換します。

同じように、フォームやコントロール上の座標でマウスポインタの位置を設定したい場合は、Control.PointToScreenメソッドを使ってクライアント座標を画面座標に変換します。

画面座標とクライアント座標について詳しくは、「画面座標をクライアント座標(コントロール上の座標)に変換する」をご覧ください。

以下のコードがフォームクラス内に書かれている時、そのフォーム上の座標でマウスポインタの位置を取得してから、フォーム上の位置で (10, 20) にマウスポインタを移動させています。

VB.NET
コードを隠すコードを選択
'フォーム上の座標でマウスポインタの位置を取得する
'画面座標でマウスポインタの位置を取得する
Dim sp As System.Drawing.Point = System.Windows.Forms.Cursor.Position
'画面座標をクライアント座標に変換する
Dim cp As System.Drawing.Point = Me.PointToClient(sp)
'X座標を取得する
Dim x As Integer = cp.X
'Y座標を取得する
Dim y As Integer = cp.Y

'フォーム上の座標 (10, 20) にマウスポインタを移動する
'クライアント座標を画面座標に変換する
Dim mp As System.Drawing.Point = _
    Me.PointToScreen(New System.Drawing.Point(10, 20))
'マウスポインタの位置を設定する
System.Windows.Forms.Cursor.Position = mp
C#
コードを隠すコードを選択
//フォーム上の座標でマウスポインタの位置を取得する
//画面座標でマウスポインタの位置を取得する
System.Drawing.Point sp = System.Windows.Forms.Cursor.Position;
//画面座標をクライアント座標に変換する
System.Drawing.Point cp = this.PointToClient(sp);
//X座標を取得する
int x = cp.X;
//Y座標を取得する
int y = cp.Y;

//フォーム上の座標 (10, 20) にマウスポインタを移動する
//クライアント座標を画面座標に変換する
System.Drawing.Point mp = this.PointToScreen(
    new System.Drawing.Point(10, 20));
//マウスポインタの位置を設定する
System.Windows.Forms.Cursor.Position = mp;
  • 履歴:
  • 2007/1/5 コントロールの座標で取得、設定する方法を追加。
  • 2013/6/13 全面的な書き換え。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。