Я реализовал пользовательский класс конструктора, который наследуется от DocumentDesigner. Стандартный класс Form в .NET Framework использует класс FormDocumentDesigner (также наследующий от DocumentDesigner), но поскольку этот класс является внутренним, его невозможно унаследовать и настроить его поведение. Я скопировал логику в этом классе с помощью отражателя и вставил это в моем пользовательском классе дизайнера (так что поведение времени разработки по умолчанию для моей формы соответствует стандартной форме).
Все работает отлично, кроме одной вещи: в методе Initialize моего пользовательского класса конструктора я хочу вставить элемент управления ToolStrip, чтобы каждый раз, когда моя форма открывалась во время разработки, этот элемент управления был видимым и редактируемым. Проблема заключается в том, что метод Initialize вызывается при каждом закрытии и повторном открытии формы в конструкторе, что приводит к тому, что каждый раз создается и добавляется новый экземпляр элемента управления ToolStrip в коллекцию Controls формы. Я ищу способ проверить, есть ли уже элемент управления ToolStrip, сериализованный в коде, и избежать добавления другого.
До сих пор я узнал, что могу использовать событие LoadComplete объекта IDesignerHost и проверить, есть ли ToolStrip в коллекции Controls формы. Тем не менее, любые лучшие идеи будут оценены.
Спасибо за ваше время! : -)