C# を使用してマウスの位置を取得する

Naila Saad Siddiqui 2023年10月12日
  1. Windows フォーム アプリケーション
  2. C# を使用して画面上のマウスの位置を取得する
C# を使用してマウスの位置を取得する

この簡単なプログラミング チュートリアルでは、C# Windows フォーム アプリケーションでマウスの位置を取得する方法について説明します。

Windows フォーム アプリケーション

コンピューターで実行するために特別に作成されたアプリケーションは、Windows フォーム アプリケーションです。 デスクトップベースのアプリケーションであるため、Web ブラウザーでは機能しません。

Windows フォーム アプリケーションには多数のコントロールが存在する場合があります。 ボタン、テキストボックス、ラベルなどのさまざまなコントロールを含む相互接続された画面で構成できます。

C# を使用して画面上のマウスの位置を取得する

対話性が最優先されるシナリオでは、マウス カーソルの現在の位置を取得する必要があることがよくあります。 画面は x 座標と y 座標で測定されるため、マウス ポインターの位置の x 座標と y 座標を取得することでマウスの位置を取得できます。

C# では、クラス Cursor を使用してマウス ポインターの位置を取得できます。 これは、画面全体と比較したマウス ポインターの現在の位置を返します。

その現在のウィンドウに固有の位置を取得する必要がある場合は、関数 ScreenToClient() を呼び出すことができます。 この関数は、x 座標と y 座標を含む Point オブジェクトを受け取り、現在のウィンドウ画面に関する Point オブジェクトを返します。

まず、Visual Studio で新しい Windows フォーム アプリケーションを作成します。

そのアプリケーションでは、デフォルトで Form1.cs が作成されます。 そのファイルで、次のような 2つのテキスト ボックスを作成します。

C# マウスの位置を取得 - ステップ 1

対応する cs ファイル、つまり Form1.cs では、マウスの位置を取得するためのコードを次のように記述できます。

Point p = PointToClient(Cursor.Position);
textBox1.Text = p.X.ToString();
textBox2.Text = p.Y.ToString();

この関数は、関数が呼び出されたときにポインターの位置に基づいて値を設定します。 後でマウス ポインターを移動しても、その値は変更されません。

そのために、このコードを onMouseMove イベント ハンドラーに記述できます。

protected override void OnMouseMove(MouseEventArgs e) {
  Point p = PointToClient(Cursor.Position);
  textBox1.Text = p.X.ToString();
  textBox2.Text = p.Y.ToString();
}

その結果、アプリの実行後にポインターがあるたびに値が (それに応じて) 変化します。

出力画面の 2つのインスタンスを添付してみましょう。

C# Get Mouse Position - Output 1

C# Get Mouse Position - Output 2

両方の出力画面から、カーソルの移動中に位置の値が変化することがわかります。 この位置の値は、現在の画面を基準にしています。

このようにして、C# .NET コードで現在のマウス位置を取得し、それをさらにプログラミング タスクに使用できます。

関連記事 - Csharp Mouse