Ответ 1
Если у вас есть файл курсора:
Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;
в противном случае вы должны создать его:
Дополнительная информация о пользовательских курсорах
В 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:
Создайте дескриптор с помощью API Windows:
[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;
}