Проблема такая, сделал я простинький контрол и захотел подключить его в студию. Для его отображения в тулбоксе сделал свою иконку. Но подлючить ее так и не получилось, постоянно отображается дефолтовая шестеренка. Вариантов перепробывал уйму! И неймспейсы менял в typeof(), и иконку перерисовывал в разых форматах от 16Х16 до 42Х42 перекладывая ее по разным папкам с различными способами подключения к проекту, и в свойствах проекта дефаулт неймспейс проверил. Результат один и тот же: неработает
Вот последний вариант кода:
namespace TypeTextBox_Control
{
[ToolboxBitmap(typeof(TypeTextBox_Control.TypeTextBox), "Resources.TypeTextBox.ico")]
[ToolboxItem(true)]
public class TypeTextBox : TextBox
{
Что тут не праваильно?
Может дело в формате файла иконки или разрешении?
Здравствуйте, AlexandrKononov, Вы писали:
AK>Проблема такая, сделал я простинький контрол и захотел подключить его в студию. Для его отображения в тулбоксе сделал свою иконку. Но подлючить ее так и не получилось, постоянно отображается дефолтовая шестеренка. Вариантов перепробывал уйму! И неймспейсы менял в typeof(), и иконку перерисовывал в разых форматах от 16Х16 до 42Х42 перекладывая ее по разным папкам с различными способами подключения к проекту, и в свойствах проекта дефаулт неймспейс проверил. Результат один и тот же: неработает
AK>Вот последний вариант кода:
AK>AK>namespace TypeTextBox_Control
AK>{
AK> [ToolboxBitmap(typeof(TypeTextBox_Control.TypeTextBox), "Resources.TypeTextBox.ico")]
AK> [ToolboxItem(true)]
AK> public class TypeTextBox : TextBox
AK> {
AK>
AK>Что тут не праваильно?
AK>Может дело в формате файла иконки или разрешении?
здесь
Если два способа как это сделать: картинка может храниться в отдельном файле или ее можно хранить внутри модуля компонента.
Ну, конечно, сначала ее нужно сделать. Иконка должна иметь размер 16x16 пикселей, палитру 16 цветов и формат BMP или ICO.
Для внешней иконки нужно добавить к классу атрибуты в виде:
[ToolboxItem(true)]
[ToolboxBitmap("C:\\Test\\GradientLabel.bmp")]
public partial class GradientLabel : Label
Первый атрибут говорит что класс GradientLabel будет использоваться как элемент в стандартной панели компонент, а второй — где найти файл иконки. Вообще говоря, первый атрибут выставлен в значение true по умолчанию, т. к. класс является наследником класса Label, но хорошей практикой является указать это напрямую.
Если же иконка хранится внутри модуля (что мне кажется более естественным и удобным), то соответствующий файл нужно добавить к проекту (меню ProjectAdd Existing Item). В свойствах файла параметр Build Action нужно уставить в значение
Embedded Resource. Теперь добавим атрибуты, указывающие как найти иконку:
[ToolboxItem(true)]
[ToolboxBitmap(typeof(GradientLabel))]
public partial class GradientLabel : Label
По умолчанию берется имя файла, совпадающее с именем типа плюс расширение bmp. Если по какой то причине нужно указать другое имя файла, то нужно использовать второй конструктор атрибута с двумя агрументами:
[ToolboxItem(true)]
[ToolboxBitmap(typeof(GradientLabel), "Label.bmp")]
public partial class GradientLabel : Label
Не знаю почему, но для компонентов
текущего проекта ни иконка, ни описание не появляется. Может быть это ошибка в редакторе VS, а может быть так и нужно. Если устанавливать компонент в Toolbox, то все показывается правильно.
Кстати, есть и другой способ установки иконки. Так как по умолчанию атрибут ToolboxBitmapAttribute берет файл согласно имени типа, то VS автоматически загружает иконку, если находит такой файл в папке проекта. Конечно такой способ наиболее простой, но мне кажется более правильно хранить иконку как внутренний ресурс.
Здравствуйте, 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 файле? На него никакие ограничения не накладываются по размеру и количеству цветов?