DOBON.NET

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

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

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

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

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。