Войти

Показать полную графическую версию : [решено] Задание картинки в ToolStripButton


Delirium
01-12-2008, 07:05
Глупый вопрос, но не могу найти решения:
имеется ToolStrip, на нем есть стандартные кнопки (New, Edit, e.t.c..). У них в качестве Image выставлен System.Image.Brush . Но нигде нет опции, позволяющей выбрать из стандартных MS иконок. Перерыл инет, все, что нашел, это список кодов картинок и их изображение здесь (http://www.kebabshopblues.co.uk/2007/01/04/visual-studio-2005-tools-for-office-commandbarbutton-faceid-property/) , но это применимо к свойству FaceId, которое применяется в панели MS Office.
А я хотел бы использовать стандартные иконки в программе. Отсюда и вопрос: как в C# задать на кнопке изображение со стандартной панели (дискета, лист и т.д.)?

Admiral
02-12-2008, 00:40
Delirium, так для любой кнопочки можно задать любую картинку вручную
http://s60.radikal.ru/i168/0812/bf/b477044ab14ax.jpg (http://s60.radikal.ru/i168/0812/bf/b477044ab14a.png)
Скрин из VB.NET 2008 EE
Если эти иконки есть отдельно, их можно взять и загнать один раз в файл ресурсов, а потом использовать его в своих прогах в будущем.

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

pva
02-12-2008, 14:32
если бы на winapi, я бы закачал с ресурсов какого-нить shell32.dll или comctl32.dll. C# такое позволяет?
типа так: LoadIcon(GetModuleHandle("comctl32.dll"), ID_CUT);

Admiral
02-12-2008, 22:06
Delirium вот, так же подумали и в MS. Ведь когда выбрать опцыю Insert Standart Menu для ToolStrip, в EE редакциях так же доступна
http://s50.radikal.ru/i127/0812/3d/1648425fb420x.jpg (http://s50.radikal.ru/i127/0812/3d/1648425fb420.png),
Скрин из VB.NET 2008 EE
в проекте в файл Form1.Design.cs добавляются соответствующие строчки кода загрузки иконок из файла ресурсов Form1.resx, в котором уже добавлены все эти ресурсы (после опцыи Insert Standart Menu).
http://i021.radikal.ru/0812/cd/e05fbff567bdx.jpg (http://i021.radikal.ru/0812/cd/e05fbff567bd.png)
Скрин из 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
03-12-2008, 07:14
Может по причине тривиальности этого не было найдено в поисковиках »
Именно по этому. Чет я не допетрил открыть ресурсы формы и увидеть их там :))))
Вот только насколько будет правильным подход использовать Win32 в .NET прогах »
Вполне допустимо, для очень многих действий приходится подключать API.
Вопрос решен, большое спасибо.

Delirium
03-12-2008, 07:31
Хотя интересно, почему ж MS не предусмотрели стандартной возможности в C# вставлять стандартные иконки без танцев с бубнами.......

Admiral
03-12-2008, 16:10
При использовании Win32 API в .Net прогах теряется хоть какая-то но многоплатформенность. Может и не актуально, но всё же.
К системным иконкам всё же непосредственно из .Net доступ есть, а именно через SystemIcons
Ножниц и других Офис элементов там нет, но
http://vbnet-learn.info/MS.Press-Developing.Microsoft..NET.Controls.with.Microsoft.Visual.Basic..NET/8353final/images/f02hq24.jpg
те что в окне сообщений (MsgBox) доступны - здесь найдутся
SystemIcons.Application
SystemIcons.Asterisk
SystemIcons.Error
SystemIcons.Exclamation
SystemIcons.Hand
SystemIcons.Information
SystemIcons.Question
SystemIcons.Warning
SystemIcons.WinLogo




© OSzone.net 2001-2012