создание компонента со своими обработчиками событий в design mode
Может надо переписывать класс Control? а где тогда доки по его внутренностям или хотя бы исходники взять? Или как-то по другому можно сделать?
Наследуйся от UserControl. Если нужно изменить поведение событий, переопредели защищённые виртуальные методы OnDragDrop, OnClick, OnMouseOver и т.д..
Спасибо за дельный совет. в общем помогло.
Попутно возник такой вопрос. От чего наследовать, чтобы получить компонент наподобии timer (он никак не отображается на форме). с другой стороны мне надо чтобы добавление такого компанента на панель или форму (на контейнеры одним словом) вызывало событие ControlAdded.
Цитата: none
Попутно возник такой вопрос. От чего наследовать, чтобы получить компонент наподобии timer (он никак не отображается на форме). с другой стороны мне надо чтобы добавление такого компанента на панель или форму (на контейнеры одним словом) вызывало событие ControlAdded.
Таймер из ВинФорма наследуется не от Control, а от Component, т.е. не является элементом управления, а является компонентом. Разница в том, что компонент не является визуальным элементом управления, как следствие, не имеет своего хэндла и прочей атрибутики. Отсюда следует, что КОМПОНЕНТ НЕ ДОЛЖЕН (И НЕ МОЖЕТ) ДОБАВЛЯТЬСЯ В КОНТЕЙНЕРНЫЕ ИЛИ ИНЫЕ ЭЛЕМЕНТЫ УПРАВЛЕНИЯ. Как видишь, у коллекции Controls метод Add принимает только экземпляры от Control а не от Component. Исходя из всего этого, зачем делать пользовательский контрол, который не имеет прорисовки??? Из этого вопроса и вытекает ответ на твой вопрос. Возникновение события ControlAdded не имеет смысла, т.к. неграфический контрол попросту никто на форму добавлять не будет.
Я думаю, что это не совсем правильно, если я буду наследовать от Control, потому что он создаёт для себя Handle и постоянно вызывает OnPaint. лишняя память для handle (а это дескриптор окна, который возможно и видеопамять тоже занимает), и лишний вызов для прорисовки, который мне в принципе не нужен.
Может быть стоит дополнить каким-нибудь образом функциональности к классу Component или может быть переопределить метод Add?
От Component напрямую наследоваться нельзя, т.к. на другие контролы добавлять твой не получится. Об этом я уже говорил. Хэндл - ну и пусть будет, занимает он всего 4 байта. Видеопамять выделяется только для GDI объектов, которые ты не создаёшь.