Создание generic-форм
От: XopcT  
Дата: 17.10.08 08:13
Оценка:
Приветствую!
Столкнулся со следующей проблемой: создаю generic-форму
public class MyForm<SomeType> : Form

Всё работает нормально никаких проблем нет. Отличий от обычной формы тоже нет.
А вот если унаследовать от неё,
public class InheritedForm : MyForm<MyType>

то унаследованную форму невозможно открыть в дизайнере — он страшно ругается на всякое. При этом программа работает нормально и унаследованная форма отображается без проблем.
Ходят упорные слухи, что можно забороть проблему, сделав промежуточный класс, который бы сам уже был без дженерика, и наследуя от него:
public class BaseForm : MyForm<MyType> {}

public class InheritedForm : BaseForm

Только оно не помогает.
Что не так с этими дженериками и как их побороть, чтобы с формой можно было работать и в дизайнере?
Re: Создание generic-форм
От: MxKazan Португалия  
Дата: 17.10.08 12:14
Оценка:
Здравствуйте, XopcT, Вы писали:

XT>Приветствую!

XT>Столкнулся со следующей проблемой: создаю generic-форму
XT>
public class MyForm<SomeType> : Form

XT>Всё работает нормально никаких проблем нет. Отличий от обычной формы тоже нет.
XT>А вот если унаследовать от неё,
XT>
public class InheritedForm : MyForm<MyType>

XT>то унаследованную форму невозможно открыть в дизайнере — он страшно ругается на всякое. При этом программа работает нормально и унаследованная форма отображается без проблем.

Что конкретно пишет дизайнер?
Re: Создание generic-форм
От: _FRED_ Черногория
Дата: 17.10.08 13:55
Оценка:
Здравствуйте, XopcT, Вы писали:

XT>Ходят упорные слухи, что можно забороть проблему, сделав промежуточный класс, который бы сам уже был без дженерика, и наследуя от него:

XT>
XT>public class BaseForm : MyForm<MyType> {}

XT>public class InheritedForm : BaseForm
XT>

XT>Только оно не помогает.
XT>Что не так с этими дженериками и как их побороть, чтобы с формой можно было работать и в дизайнере?

Не так то, в вашем случае, что дизайнер работает с первым классом, объявленном в файле. А у вас это "промежуточный класс". Нужно так:
XT>public class InheritedForm : BaseForm

XT>public class BaseForm : MyForm<MyType> {}
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Создание generic-форм
От: XopcT  
Дата: 20.10.08 13:42
Оценка:
Всё, проблема разрешилась. Действительно, введение промежуточного "пустого" класса спасало положение.
Кроме этого, возникал глюк в form_Load'е, от него и шли все неприятности. Когда подправил этот метод, всё стало нормально работать.
Благодарю за советы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.