Извините, но это просто не сработает (это позор - раньше я хотел, чтобы вы тоже могли это делать). Проблема в базовой методологии дизайнера.
Чтобы представить вам модель вашей формы, она на самом деле не пытается построить саму форму; если бы он это сделал, вы столкнулись бы с другими проблемами - что если ваша форма не имеет конструктора без параметров? Вместо этого он фактически создает экземпляр базового класса вашей формы. Затем он просматривает ваш InitializeComponents()
метод и «накладывает» на все элементы управления, которые вы там определили, на базовую форму.
Так что понятно, почему это не сработает. Вы можете создать экземпляр BaseFormClass
, потому что для его создания создается экземпляр XtraForm
, который является конкретным. Но вы не можете создать экземпляр ConcreteFormClass
, потому что для этого нужно создать экземпляр BaseFormClass
, который является абстрактным.
Самый простой способ для этого - просто сделать BaseFormClass
неабстрактным. (Если вы хотите быть абсолютно уверенным, что никто не может создать его, возможно, вы могли бы сделать конструктор по умолчанию приватным? Я не уверен, может ли дизайнер справиться с этим, но я не понимаю, почему он не смог.) такова жизнь. Пожаловаться на Microsoft и, возможно, будет лучше в Visual Studio 2012.