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

374
09 декабря 2016, 08:45

Подскажите как изменить курсор на свой? Делаю так :

 Cursor cur = new Cursor(new System.IO.MemoryStream(global::MSU.Properties.Resources.cursorDragDrop));

Пишет ошибку -

Наиболее подходящий перегруженный метод для "System.IO.MemoryStream.MemoryStream(int)" имеет несколько недопустимых аргументов

Answer 1

К примеру можно сделать так (из доступных курсоров):

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.

READ ALSO
Entity Framework прямой запрос без контекста базы

Entity Framework прямой запрос без контекста базы

Возможно ли сделать запрос используя средства EF не описывая при этом контекст базы данных, либо создав и описав его непосредственно в функции...

269
Переименовывание файла на сервере

Переименовывание файла на сервере

Вот у меня закачен на сервере файл "файлtxt", и мне его надо без перекачки переименовать

230
Проблемы c FTP C#

Проблемы c FTP C#

Вот код

328
WPF listView Обновление эллементов

WPF listView Обновление эллементов

Всем приветУ меня есть listView

855