Robert Zuckerstätter Ответов: 1

Как убедить Visual studio designer показать элементы управления, производные от абстрактного базового класса


В настоящее время я работаю над улучшением существующего проекта (он довольно большой), касающегося администрирования экранов (около 250 экранов для ввода данных, настройки и представления результатов). Я решил создать абстрактный базовый класс, который заставляет производные экраны реализовывать некоторые базовые функции.

Теперь я страдаю от проблемы, что дизайнер отказывается показывать затронутые экраны после того, как я их отредактировал (см. Один, Б и С.

Чтобы показать вам свою проблему, я создал тестовую программу, которую вы можете скачать здесь.
После перемещения одной из кнопок на производном экране и перекомпиляции конструктор отказывается показывать пользовательский интерфейс до перезапуска visual studio.

Мне любопытно, можно ли обойти ограничение конструктора без использования # IF DEBUG или промежуточных классов, которые не являются абстрактными.

Заранее большое спасибо,
Роберт

Что я уже пробовал:

Погуглив, я уже решил основную проблему, заключающуюся в том, что дизайнер (Visual Studio 2012 Update 5) обычно не может показывать экраны, производные от абстрактного базового класса, предоставляя TypeDescriptionProvider. Я нашел принцип, который я использую, описанный в здесь.

1 Ответов

Рейтинг:
11

OriginalGriff

Это проблема, на которую я жалуюсь с VS2005!
Вы не можете напрямую отобразить какой-либо элемент управления, основанный на производном классе, но вокруг него есть Клудж: Получение бетона класса от абстрактного пользовательского элемента управления[^]
Это ни в коем случае не идеально, но это работает.


Robert Zuckerstätter

Привет OriginalGriff,
спасибо за ваше решение. Я уже знал ваш пост от 10/2013.

Я хотел прямо спросить, Можно ли решить эту проблему, не проводя различия между режимом отладки и режимом выпуска.

Ваше решение, вероятно, будет моим обходным путем (и принятым ответом), если никто не сможет предложить более элегантного решения.
А пока я оставлю эту тему открытой,чтобы дать другим возможность высказаться.

С технической точки зрения я думаю, что не понимаю, почему ребята из microsoft реализовали его таким образом, но с практической точки зрения это довольно раздражает.

Спасибо снова,
Роберт

OriginalGriff

Я буду внимательно следить - я сам хотел бы найти лучшее решение! :смеяться:

Robert Zuckerstätter

После двух недель ожидания и наблюдения ваше решение по-прежнему остается единственным (и поэтому лучшим) подходом к описанной проблеме. Я уже изменил код в своем проекте на прошлой неделе, и он отлично работает.
Я надеюсь, что ребята из MS подумают об улучшении дизайнера таким образом в будущих версиях.

Спасибо за вашу помощь!

OriginalGriff

Пожалуйста!
Я бы хотел, чтобы они...: вздох: