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

システムカーソルを取得する

システムに登録されているカーソル(マウスポインタ)は、Cursorsクラスの静的プロパティで取得できます。

以下に、Cursorsクラスで取得できるシステムカーソルをすべて描画する例を示します。このコードはフォームのクラスに記述されており、カーソルをそのフォームに描画しています。

VB.NET
コードを隠すコードを選択
'カーソルを描画するGraphics 
Dim g As System.Drawing.Graphics = Me.CreateGraphics()

'Cursorsクラスの静的プロパティを取得する 
Dim cursorsType As Type = GetType(System.Windows.Forms.Cursors)
Dim pros As System.Reflection.PropertyInfo() = cursorsType.GetProperties( _
    System.Reflection.BindingFlags.Public Or _
    System.Reflection.BindingFlags.Static)

'描画する位置 
Dim drawPoint As New System.Drawing.Point(10, 10)

For Each pro As System.Reflection.PropertyInfo In pros
    'CursorsクラスのプロパティからCursorオブジェクトを取得する 
    Dim cur As System.Windows.Forms.Cursor = _
        DirectCast(pro.GetValue(Nothing, Nothing), System.Windows.Forms.Cursor)
    'カーソルを描画する 
    cur.Draw(g, New Rectangle(drawPoint, cur.Size))

    'プロパティの名前を描画する 
    g.DrawString(pro.Name, Me.Font, System.Drawing.Brushes.Black, _
        drawPoint.X, drawPoint.Y + cur.Size.Height)

    'カーソルの描画位置を変更する 
    drawPoint.X += cur.Size.Width + 40
    If drawPoint.X > 500 Then
        drawPoint.X = 10
        drawPoint.Y += cur.Size.Height + CInt(Me.Font.GetHeight()) + 10
    End If
Next

g.Dispose()
C#
コードを隠すコードを選択
//カーソルを描画するGraphics
System.Drawing.Graphics g = this.CreateGraphics();

//Cursorsクラスの静的プロパティを取得する
Type cursorsType = typeof(System.Windows.Forms.Cursors);
System.Reflection.PropertyInfo[] pros = cursorsType.GetProperties(
    System.Reflection.BindingFlags.Public |
    System.Reflection.BindingFlags.Static);

//描画する位置
System.Drawing.Point drawPoint = new System.Drawing.Point(10, 10);

foreach (System.Reflection.PropertyInfo pro in pros)
{
    //CursorsクラスのプロパティからCursorオブジェクトを取得する
    System.Windows.Forms.Cursor cur =
        (System.Windows.Forms.Cursor)pro.GetValue(null, null);
    //カーソルを描画する
    cur.Draw(g, new Rectangle(drawPoint, cur.Size));

    //プロパティの名前を描画する
    g.DrawString(pro.Name, this.Font, System.Drawing.Brushes.Black,
        drawPoint.X, drawPoint.Y + cur.Size.Height);

    //カーソルの描画位置を変更する
    drawPoint.X += cur.Size.Width + 40;
    if (drawPoint.X > 500)
    {
        drawPoint.X = 10;
        drawPoint.Y += cur.Size.Height + (int)this.Font.GetHeight() + 10;
    }
}

g.Dispose();

結果は、次のように表示されます。

システムカーソル

以下にCursorsクラスのプロパティを表で示します。なお説明は、MSDNの「Cursors クラス」からの抜粋です。

名前 説明
AppStarting アプリケーションの開始時に表示されるカーソルを取得します。
Arrow 矢印カーソルを取得します。
Cross 十字カーソルを取得します。
Default 既定のカーソルを取得します。通常は矢印カーソルです。
Hand Web リンクの上にマウスを移動すると表示されるハンド カーソルを取得します。
Help 矢印と疑問符が組み合わされたヘルプ カーソルを取得します。
HSplit マウスを水平方向の分割バーの上に置くと表示されるカーソルを取得します。
IBeam マウスをクリックしたときにテキスト カーソルの位置を示す I ビーム カーソルを取得します。
No 現在の操作が無効な領域であることを示すカーソルを取得します。
NoMove2D マウスを動かさずにウィンドウを水平および垂直の両方向にスクロールできるとき、このホイール操作を表すカーソルを取得します。
NoMoveHoriz マウスを動かさずに水平方向へのスクロールができるとき、このホイール操作を表すカーソルを取得します。
NoMoveVert マウスを動かさずにウィンドウを垂直方向にスクロールできるとき、このホイール操作を表すカーソルを取得します。
PanEast マウスを動かしながらウィンドウを水平方向に右スクロールできるとき、このホイール操作を表すカーソルを取得します。
PanNE マウスを動かしながらウィンドウを水平および垂直に右上へスクロールするとき、このホイール操作を表すカーソルを取得します。
PanNorth マウスを動かしながらウィンドウを垂直に上へスクロールするとき、このホイール操作を表すカーソルを取得します。
PanNW マウスを動かしながらウィンドウを水平および垂直に左上へスクロールするとき、このホイール操作を表すカーソルを取得します。
PanSE マウスを動かながらウィンドウを水平および垂直に右下へスクロールするとき、このホイール操作を表すカーソルを取得します。
PanSouth マウスを動かしながらウィンドウを垂直に下へスクロールするとき、このホイール操作を表すカーソルを取得します。
PanSW マウスを動かしながらウィンドウを水平および垂直に左下へスクロールするとき、このホイール操作を表すカーソルを取得します。
PanWest マウスを動かしながらウィンドウを水平に左へスクロールするとき、このホイール操作を表すカーソルを取得します。
SizeAll 十字型の方向を指す矢印が結合して構成されている、4 方向のサイズ変更用カーソルを取得します。
SizeNESW 2 方向の対角線 (右斜めと左斜め) で構成されているサイズ変更用カーソルを取得します。
SizeNS 垂直の 2 方向 (上と下) で構成されているサイズ変更用カーソルを取得します。
SizeNWSE 2 方向の対角線 (左斜めと右斜め) で構成されているサイズ変更用カーソルを取得します。
SizeWE 水平の 2 方向 (左と右) で構成されているサイズ変更用カーソルを取得します。
UpArrow 通常はカーソル位置の識別に使用する上向きの矢印カーソルを取得します。
VSplit マウスを垂直方向の分割バーの上に置くと表示されるカーソルを取得します。
WaitCursor 待機カーソルを取得します。通常は砂時計の形です。

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

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。