Страницы

Поиск по вопросам

суббота, 20 апреля 2019 г.

Изменить курсор на свой C# WinForms

Подскажите как изменить курсор на свой? Делаю так :
Cursor cur = new Cursor(new System.IO.MemoryStream(global::MSU.Properties.Resources.cursorDragDrop));
Пишет ошибку -
Наиболее подходящий перегруженный метод для "System.IO.MemoryStream.MemoryStream(int)" имеет несколько недопустимых аргументов


Ответ

К примеру можно сделать так (из доступных курсоров):
Cursor.Current = Cursors.WaitCursor;
Или же свой курсор вот так:
Cursor.Current = new Cursor("C:\\<путь к файлу>\\icon.cur");
Кстати, обратите внимание на расширение файла .cur, к примеру .gif туда нельзя упаковать. В VisualStudio есть возможность создать Cursor File (по крайней мере была). Все что Вам нужно - это указать путь к файлу и собственно говоря - сам файл. Будет полезно: Cursors - свойства

Если хочется зашить в программу, то думаю стоит добавить файл курсора(.cur) в ресурсы проекта. Затем в коде получить этот файл, конвертировать и создать курсор, что-то на подобии этого:
var img = new Bitmap(WindowsFormsApplication1.Properties.Resources.myCursor); Icon icon = Icon.FromHandle(img.GetHicon()); Cursor cur = new Cursor(icon.Handle); Cursor.Current = cur;
Данный код приведен в качестве альтернативного примера, но в нем имеются свои недостатки в виде утечки нативных ресурсов. Также, если кликнуть мышкой в окне чужой программы - может возникнуть проблема. Поэтому советую ознакомиться с этим ответом Change Cursor HotSpot in WinForms .NET, он будет более правильным, с использованием WinAPI

Комментариев нет:

Отправить комментарий