Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Свой компонент TabContol, отнаследованный от стандартного

5.8K
12 августа 2008 года
Pirks
10 / / 19.04.2004
На самом деле, менять мне нужно вовсе не TabControl, а гораздо менее известный... Но для лучшего понимания сути вопроса — попробую объяснить на этом компоненте
Итак: есть компонент TabControl, в нем есть коллекция компонентов Page.
В один прекрасный момент понадобилось мне добавить к классу Page дополнительное свойство...
Я, естесственно, пишу свой класс MyPage, отнаследованный от класса Page.
Но теперь как мне использовать этот мой класс?
Я вижу три варианта:
1) Написать свой класс MyTabControl, отнаследованный от TabControl. Но так как я не могу подменить коллекцию Page, объявленную в базовом классе, мне придется объявить дополнительную коллекцию MyPage, и помимо всего прочего — переопределить все методы класса TabControl, которые используют коллекцию Page. Кроме того, по хорошему надо переопределить все методы которые возвращают тип Page — сделать так, чтобы они возвращали MyPage, иначе везде придется кастовать — не есть гуд . Короче, по сути, почти весь компонент TabControl надо переписать...
2) Есть исходники класса TabConrol. Я могу непосредственно в нем заменить класс у коллекции c Page на MyPage. Но проблема с кастованием типа остается — либо также переписать в этом классе все методы, использующие Page, либо все-время кастовать. Ну и редактирование стандартных компонентов... то еще зло
3) Не трогать классы вообще, а после добавления TabControl на форму — вручную поменять в файлах file1.Designer.cs создание страниц с Page на MyPage. Но класс хочется сделать более-менее универсальным.. потому что использовать его буду не только я.. а такие тонкости вовсе неочевидны... Ну и опять же остаются проблемы с кастованием (только тут выбора нет — только кастовать), да и в дизайнере мои новые свойства на вкладке Properties не появятся...

Может быть, есть еще какие-нибудь варианты?
241
13 августа 2008 года
Sanila_san
1.6K / / 07.06.2005
Из предложенных вариантов мне представляется наиболее экономичным по времени второй.
9.0K
09 сентября 2008 года
t-34
129 / / 30.11.2007
вобще можно просто в массив TabContorl.TabItems[] запаковывать свои TabPage:
TabContorl.TabItems.Add((TabPage)(new MyTabePage)).
А потом так же распаковывать :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог