Подтвердить что ты не робот

Как изменить курсор мыши на пользовательский при работе с приложениями Windows Forms?

В UserControl я хочу изменить курсор мыши со стрелки, на значок руки.
Что я сейчас делаю, так это:

this.Cursor = Cursors.Hand;

Это очень приятно, он дает мне курсор мыши, который выглядит так:

enter image description here

Но вот моя проблема... это показывает руку с указательным пальцем.
Мне нужна рука "захвата", более похожая на эту:

enter image description here

Как это сделать? Как загрузить файл значка (.ico), файл курсора (.cur) или файл изображения (.png) и использовать его в качестве курсора мыши?

4b9b3361

Ответ 1

Если у вас есть файл курсора:

Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;

в противном случае вы должны создать его:

Дополнительная информация о пользовательских курсорах

Ответ 2

Вы пробовали System.Windows.Forms.Cursor curs = new System.Windows.Forms.Cursor(file_name);?

Ответ 3

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

Ответ 4

Я протестировал этот метод. Все в порядке. Это мое применение:

    [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;
    }