Web検索はbingがおすすめ!

コントロールのカーソル(マウスポインタ)の形状を変更する - C#

コントロールのカーソル(マウスポインタ)の形状を変更する手順を紹介します。

デザイン時に変更する

フォームのデザイン時にプロパティを変更してコントロールのカーソルを設定する手順です。

Windows Formアプリケーションで下図のUIを作成します。フォームにPanelを1つ配置します。


Panelを選択し、プロパティウィンドウを表示します。プロパティウィンドウの"Cursor"プロパティを編集します。


Cursorプロパティの右隣のコンボ朴素を開くとマウスポインタの一覧が表示されます。変更したいポインタの形状を選択します。今回は"Hand"を選択しました。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。パネルの外側ではポインタの形状はデフォルトのままです。


Panel内にポインタが入ると、ポインタが手の形状に変化します。


指定したコントロールのマウスポインタの形状を変更できました。

コードで変更する

アプリケーションの状態や、コントロールの一部のエリアでカーソルを変更するなど、動的にカーソルを変更する場合はプログラムコードで実装する必要があります。ここでは、コードでマウスポインタの形状を変更する方法を紹介します。

UI

下図のUIを作成します。Windows FormアプリケーションにPanelを1つ配置します。

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowControlCursorChange
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
      if (e.X < (int)(panel1.Width / 2)) {
        panel1.Cursor = Cursors.Cross;
      }
      else {
        panel1.Cursor = Cursors.IBeam;
      }
    }
  }
}

解説

if (e.X < (int)(panel1.Width / 2)) {
  panel1.Cursor = Cursors.Cross;
}
else {
  panel1.Cursor = Cursors.IBeam;
}
panel1の左半分にカーソルがある場合は、十字のマウスポインタに変更します。右半分にカーソルがある場合は、”I”字のマウスポインタに設定します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


パネルの外側にマウスポインタがある場合はデフォルトの形状です。


マウスポインタがパネルの左半分の領域内にある時は十字の形状になります。右半分の領域にある時はIビームのマウスポインタに変わります。


プログラムコードによるマウスポインタの設定ができました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2014-04-22
iPentec all rights reserverd.