.NET - [решено] Задание картинки в ToolStripButton

Ответить
Аватара пользователя
Delirium

.NET - [решено] Задание картинки в ToolStripButton

Сообщение Delirium »

Глупый вопрос, но не могу найти решения:

имеется ToolStrip, на нем есть стандартные кнопки (New, Edit, e.t.c..). У них в качестве Image выставлен System.Image.Brush . Но нигде нет опции, позволяющей выбрать из стандартных MS иконок. Перерыл инет, все, что нашел, это список кодов картинок и их изображение
здесь
, но это применимо к свойству FaceId, которое применяется в панели MS Office.

А я хотел бы использовать стандартные иконки в программе. Отсюда и вопрос: как в C# задать на кнопке изображение со стандартной панели (дискета, лист и т.д.)?
Аватара пользователя
Admiral

Re: .NET - [решено] Задание картинки в ToolStripButton

Сообщение Admiral »

Delirium, так для любой кнопочки можно задать любую картинку вручную



Скрин из VB.NET 2008 EE

Если эти иконки есть отдельно, их можно взять и загнать один раз в файл ресурсов, а потом использовать его в своих прогах в будущем.
Аватара пользователя
Delirium

Re: .NET - [решено] Задание картинки в ToolStripButton

Сообщение Delirium »

Да нет, ресурсы то я использовать умею Изображение ВОт на Вашем скрине есть стандартные изображения напротив пунктов меню Copy, Cut, и т.д.(ножницы и т.д.). Вот их как использовать? При создании ToolStrip в VS 2008 есть опция - Insert Standart Menu - вставляет New, Copy, Paste с иконками. Как их выставить своим кнопкам?
Аватара пользователя
pva

Re: .NET - [решено] Задание картинки в ToolStripButton

Сообщение pva »

если бы на winapi, я бы закачал с ресурсов какого-нить shell32.dll или comctl32.dll. C# такое позволяет?

типа так: LoadIcon(GetModuleHandle("comctl32.dll"), ID_CUT);
Аватара пользователя
Admiral

Re: .NET - [решено] Задание картинки в ToolStripButton

Сообщение Admiral »

Delirium вот, так же подумали и в MS. Ведь когда выбрать опцыю Insert Standart Menu для ToolStrip, в EE редакциях так же доступна

,

Скрин из VB.NET 2008 EE

в проекте в файл Form1.Design.cs добавляются соответствующие строчки кода загрузки иконок из файла ресурсов Form1.resx, в котором уже добавлены все эти ресурсы (после опцыи Insert Standart Menu).



Скрин из C# 2008 EE

А что собственно мешает заказывать Insert Standart Menu, убрать неугодные кнопки, вытягивать из добавленного автоматически ресурс файла нужны иконки? Может по причине тривиальности этого не было найдено в поисковиках. Наверное, была мысль что эти иконки должны быть глобально в системе и что они оттуда коллективно тянутся? Видео MS решило обезопасить пользователя и в его прогу ресурсы кидать эти по принципу "всё своё носи с собой".

pva да конечно, из .NET прог есть доступ практически ко всем Win32 API. Нужно только известить прогу, что бы она искала нужную функцию не в нёдрах MS .NET Framework.

На VB.NET это будет так



Код:

Код: Выделить всё

Public Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) As Long
Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long

Вот только насколько будет правильным подход использовать Win32 в .NET прогах.
Аватара пользователя
Delirium

Re: .NET - [решено] Задание картинки в ToolStripButton

Сообщение Delirium »

Цитата Admiral:



Может по причине тривиальности этого не было найдено в поисковиках
.NET - [решено] Задание картинки в ToolStripButton




Именно по этому. Чет я не допетрил открыть ресурсы формы и увидеть их там Изображение)))


Цитата Admiral:



Вот только насколько будет правильным подход использовать Win32 в .NET прогах
.NET - [решено] Задание картинки в ToolStripButton




Вполне допустимо, для очень многих действий приходится подключать API.

Вопрос решен, большое спасибо.
Аватара пользователя
Delirium

Re: .NET - [решено] Задание картинки в ToolStripButton

Сообщение Delirium »

Хотя интересно, почему ж MS не предусмотрели стандартной возможности в C# вставлять стандартные иконки без танцев с бубнами.......
Аватара пользователя
Delirium

Re: .NET - [решено] Задание картинки в ToolStripButton

Сообщение Delirium »

При использовании Win32 API в .Net прогах теряется хоть какая-то но многоплатформенность. Может и не актуально, но всё же.

К системным иконкам всё же непосредственно из .Net доступ есть, а именно через SystemIcons

Ножниц и других Офис элементов там нет, но



те что в окне сообщений (MsgBox) доступны - здесь найдутся

SystemIcons.Application

SystemIcons.Asterisk

SystemIcons.Error

SystemIcons.Exclamation

SystemIcons.Hand

SystemIcons.Information

SystemIcons.Question

SystemIcons.Warning

SystemIcons.WinLogo
Ответить

Вернуться в «Программирование и базы данных»