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つのテキスト ボックスを作成します。
対応する 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# .NET コードで現在のマウス位置を取得し、それをさらにプログラミング タスクに使用できます。