在c#中设置Windows窗体上的自定义光标

本文关键字:自定义 光标 窗体 Windows 设置 | 更新日期: 2023-09-27 18:08:11

我正在Visual c#中创建一个WinForms应用程序,并希望将光标更改为我创建的自定义图像(.cur)。我希望光标图像仅在表单窗口上更改为此。

前面回答的所有问题都建议将this.cursor设置为使用光标路径创建的新cursor对象,使用如下语句:

this.Cursor = new Cursor(@"C:'green.cur"); // this
this.Cursor = new Cursor(GetType(), @"C:'green.cur"); // or this

,但是两个语句都会导致相同的错误:

图片格式无效。图像文件可能损坏。

我还尝试在导入user32.dll后使用LoadImage导入光标,但这会导致错误:

传递给游标的Win32句柄无效或类型错误。

我可以用下面的语句将游标设置为标准的等待游标:

this.Cursor = Cursors.WaitCursor;

同样的.cur文件在c++程序中用于设置游标(游标嵌入到资源中)时效果很好。

在c#中设置Windows窗体上的自定义光标

您需要使用LoadCursorFromFile:

[DllImport("user32.dll")]
static extern IntPtr LoadCursorFromFile(string lpFileName);

和当你想改变光标时:

IntPtr cursor = LoadCursorFromFile(@"C:'green.cur");
this.Cursor = new Cursor(cursor);