Здравствуйте, Pavel_Agurov, Вы писали:
P_A>Если два способа как это сделать: картинка может храниться в отдельном файле или ее можно хранить внутри модуля компонента.
P_A>Ну, конечно, сначала ее нужно сделать. Иконка должна иметь размер 16x16 пикселей, палитру 16 цветов и формат BMP или ICO.
P_A>Для внешней иконки нужно добавить к классу атрибуты в виде:
P_A>P_A>[ToolboxItem(true)]
P_A>[ToolboxBitmap("C:\\Test\\GradientLabel.bmp")]
P_A>public partial class GradientLabel : Label
P_A>
P_A>Первый атрибут говорит что класс GradientLabel будет использоваться как элемент в стандартной панели компонент, а второй — где найти файл иконки. Вообще говоря, первый атрибут выставлен в значение true по умолчанию, т. к. класс является наследником класса Label, но хорошей практикой является указать это напрямую.
P_A>Если же иконка хранится внутри модуля (что мне кажется более естественным и удобным), то соответствующий файл нужно добавить к проекту (меню ProjectAdd Existing Item). В свойствах файла параметр Build Action нужно уставить в значение Embedded Resource. Теперь добавим атрибуты, указывающие как найти иконку:
P_A>P_A>[ToolboxItem(true)]
P_A>[ToolboxBitmap(typeof(GradientLabel))]
P_A>public partial class GradientLabel : Label
P_A>
P_A>По умолчанию берется имя файла, совпадающее с именем типа плюс расширение bmp. Если по какой то причине нужно указать другое имя файла, то нужно использовать второй конструктор атрибута с двумя агрументами:
P_A>P_A>[ToolboxItem(true)]
P_A>[ToolboxBitmap(typeof(GradientLabel), "Label.bmp")]
P_A>public partial class GradientLabel : Label
P_A>
P_A>Не знаю почему, но для компонентов текущего проекта ни иконка, ни описание не появляется. Может быть это ошибка в редакторе VS, а может быть так и нужно. Если устанавливать компонент в Toolbox, то все показывается правильно.
P_A>Кстати, есть и другой способ установки иконки. Так как по умолчанию атрибут ToolboxBitmapAttribute берет файл согласно имени типа, то VS автоматически загружает иконку, если находит такой файл в папке проекта. Конечно такой способ наиболее простой, но мне кажется более правильно хранить иконку как внутренний ресурс.
Я наверно тупой, ни один способ не прошел
Может проблема в bmp файле? На него никакие ограничения не накладываются по размеру и количеству цветов?