UserControl
で、マウスカーソルを矢印から手のアイコンに変更します。
私が現在していることはこれです:
this.Cursor = Cursors.Hand;
これは非常に便利です。次のようなマウスカーソルが表示されます。
しかし、ここに私の問題が来ます...これは人差し指で手を示しています。
必要なのは、「つかむ」手です。これは次のようなものです。
これを行う方法、アイコンファイル(.ico)、カーソルファイル(.cur)、またはイメージファイル(.png)を読み込み、マウスカーソルとして使用するにはどうすればよいですか?
カーソルファイルがある場合:
Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;
それ以外の場合は、作成する必要があります。
カスタムカーソル に関する詳細情報
System.Windows.Forms.Cursor curs = new System.Windows.Forms.Cursor(file_name);
を試しましたか?
WinForms Cursor
クラスでカスタムカーソルを使用する場合の注意点は、ストリーム、ファイル名、およびリソースコンストラクターのオーバーロードを使用する場合、提供される.cur
ファイルは白黒でなければならないということです。
.cur
ファイルに白黒以外の色が含まれている場合、これは機能しません。
Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;
Windowsハンドルコンストラクターオーバーロードを使用して、この制限を回避する方法があります。
Windows APIを使用してハンドルを作成します。
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr LoadCursorFromFile(string fileName);
次に、次のように適切なCursor
コンストラクターに渡します。
IntPtr handle = LoadCursorFromFile("myCursor.cur");
Cursor myCursor = new Cursor(handle);
myControl.Cursor = myCursor;
これにより、他のArgumentException
コンストラクターが色を含むImage format is not valid. The image file may be corrupted.
ファイルでオーバーロードしているときに、他の人がCursor
に頭を引っ掻いて、.cur
をスローすることを防ぐことができます。
この方法をテストしました。大丈夫です。これは私の適用です:
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr LoadCursorFromFile(string fileName);
Cursor myCursor;
private void tsbtn_ZoomIn_Click(object sender, EventArgs e)
{
IntPtr handle = LoadCursorFromFile("view_zoom_in.cur");
myCursor = new Cursor(handle);
zg1.Cursor = myCursor;
}