Подсказка к использованию пользовательских курсоров с классом 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
, который содержит цвет.