Всем привет!
Есть проблема — нужно запретить некоторым компонентам
появляться в ToolBox.
Установка ToolboxItemAttribute для компонента c параметром false
вызывает ошибку компилятора MC++, хотя
на C# все работает отлично.
Может есть другой способ не добовлять компоненты в ToolBox?
Заранее спасибо!
17.06.04 11:48: Перенесено модератором из '.NET GUI' — AndrewVK
Здравствуйте, Hologen, Вы писали:
H>Всем привет!
H>Есть проблема — нужно запретить некоторым компонентам
H>появляться в ToolBox.
H>Установка ToolboxItemAttribute для компонента c параметром false
H>вызывает ошибку компилятора MC++, хотя
H>на C# все работает отлично.
Очень интересная проблема. Интересно, в C++.NET даже если есть вот такой класс:
public __gc class Test{
public:
Test(String*){}
Test(Boolean*){}
};
То попытка создать его экземпляр вот так:
Test *test=new Test(String::Empty);
или так
Test *test=new Test(false);
вызывает ошибку error C2668: 'Test_Controls::Test::Test' :
ambiguous call to overloaded function
а конструкторы ToolboxItemAttribute:
public: ToolboxItemAttribute(bool);
public: ToolboxItemAttribute(String*);
public: ToolboxItemAttribute(Type*);
поэтому и ошибка
H>Может есть другой способ не добовлять компоненты в ToolBox?
Может посмотрите лицензирование... В ToolBox добавить можно будет, но без лицензии, будет уже в дизайн-времени ошибка.
... << RSDN@Home 1.1.3 stable >>
Ну если нельзя написать ToolBoxItemAttribute(bool defaultType), то может попробывать написать ToolBoxItemAttribute(Type toolboxItemType). Если получиться второе, то написав свою реализацию ToolBoxItem можно запретить добавлять его в ToolBox.
Длинно получилось

... << Rsdn@Home 1.1.4 beta 1 >>
Здравствуйте, Ael, Вы писали:
Ael>Интересно, в C++.NET даже если есть вот такой класс:
Ael>Ael>public __gc class Test{
Ael>public:
Ael> Test(String*){}
Ael> Test(Boolean*){}
Ael> };
Ael>
Ael>То попытка создать его экземпляр вот так:
Ael>Ael> Test *test=new Test(false);
Ael>
Ael>вызывает ошибку error C2668: 'Test_Controls::Test::Test' : ambiguous call to overloaded function
Большое спасибо Вам за ответ. Он навел на нужное решение.
Вот оно:
public __gc class MyToolboxItemAttribute : public ToolboxItemAttribute
{
public:
MyToolboxItemAttribute (bool defaultType) : ToolboxItemAttribute (defaultType) {}
};
И все! теперь MyToolboxItemAttribute (false) работает.
Здравствуйте, V.Petrovski, Вы писали:
VP>Ну если нельзя написать ToolBoxItemAttribute(bool defaultType), то может попробывать написать ToolBoxItemAttribute(Type toolboxItemType). Если получиться второе, то написав свою реализацию ToolBoxItem можно запретить добавлять его в ToolBox.
VP>Длинно получилось
Спасибо за совет.
Второе получается, а вот как в своей
реализации ToolBoxItem запретить добавлять в ToolBox?
Здравствуйте, Hologen, Вы писали:
[skipped]
H>H>public __gc class MyToolboxItemAttribute : public ToolboxItemAttribute
H>{
H>public:
H> MyToolboxItemAttribute (bool defaultType) : ToolboxItemAttribute (defaultType) {}
H>};
H>
H>И все! теперь MyToolboxItemAttribute (false) работает.

Классно — а я вчера вечером именно это и пытался сделать, а голова не работала.