如何在使用Windows窗体应用程序时将鼠标光标更改为自定义的光标?
在UserControl
我想将鼠标光标从箭头改为手形图标。
我目前做的是这样的:
this.Cursor = Cursors.Hand;
这是非常好的,它给了我一个像这样的鼠标光标:
但是这里出现了我的问题…这显示了一个用手指指着的手。
我需要的是一个“抓”的手,更像这个:
我该怎么做?如何加载图标文件(.ico),光标文件(.cur)或图像文件(.png),并将其用作鼠标光标?
如果你有一个游标文件:
Cursor myCursor = new Cursor("myCursor.cur"); myControl.Cursor = myCursor;
否则你必须创build一个:
一些关于自定义游标的更多信息
你有没有尝试过System.Windows.Forms.Cursor curs = new System.Windows.Forms.Cursor(file_name);
?
在WinForms Cursor
类中使用自定义游标的一个注意事项是,当使用stream,文件名和资源构造函数重载时,提供的.cur
文件必须是黑白的 。
这意味着如果.cur
文件除了黑白以外还包含任何颜色,这将不起作用。
Cursor myCursor = new Cursor("myCursor.cur"); myControl.Cursor = myCursor;
通过使用Windows句柄构造函数重载,可以解决此限制:
通过使用Windows API创build句柄:
[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.
Image format is not valid. The image file may be corrupted.
当使用包含颜色的.cur
文件的其他Cursor
构造函数重载时。
我testing了这个方法。 没关系。 这是我的申请:
[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; }