在C#中将自定义光标设置在Windows窗体上

时间:2014-06-11 09:02:47

标签: c# winforms cursor

我在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

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

  

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

我按照建议[{3}}导入LoadImage后,尝试使用user32.dll导入光标,但这导致了错误:

  

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

我可以使用以下语句将光标设置为标准等待光标:

this.Cursor = Cursors.WaitCursor;

当用于在光标嵌入资源的C ++程序中设置光标时,相同的.cur文件非常有效。

1 个答案:

答案 0 :(得分:2)

您需要使用LoadCursorFromFile

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

当您想要更改光标时:

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