![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Track |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 18.2.2010 Репутация: нет Всего: нет |
При завершении проекта часто оказывается, что самый большой класс - это Form, на которой уже собираются все классы и элементы.
Кнопки, меню и прочее. Количество элементов запросто может достигнуть пары сотен а то и больше. Пока что для себя придумал разбивать эти элементы на этакие модули. К примеру беру панель со всеми ее кнопочками и прочим и выношу ее как отдельный класс, унаследованный от UserControl. По возможности в этом же модуле пишу все обработки кнопок и т.д. Если что-то надо отрабатывать на главной форме, то открываю доступ через public или internal. Но тут есть некоторые неудобства - например если хочу сделать инициализацию этого модуля с параметрами или например добавить в главной форме к этому модулю еще какой-то Control (myModule.Element.Controls.Add(myButton)) то при работе в дизайнере VS эти строки удаляются. Как это побороть? А какие методы вы используете при разработке сложных форм? |
|||
|
||||
dzaraev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: нет Всего: 1 |
Всё вено - для этого UserControl и создан. Просто не надо добавлять вашу инициализацию в генерируемый дизайнером кусок, добавляйте в .cs файл с именем формы (Form1.cs) и там, после InitializeComponent() добавляйте ваш код. Всё тот же UserControl, дополнительно закрытый интерфейсом (если в проекте применяется MVP). Для небольших компонентов, с четкой задачей иногда больше подходит наследование от стандартных контролов и добавление своего функционала (например какой-нибудь свой экзотический NumericUpDown). Это что касается WinForms. В WPF также добавляется выделение большей части визуального представления контролов в шаблоны и стили. В итоге логика контола может быть переиспользована с другим представлением. В общем использую преимущественно декомпозицию структурную, в отдельных случаях прибегая к наследованию от стандартных компонентов. Это сообщение отредактировал(а) dzaraev - 10.10.2013, 07:51 --------------------
Если вопрос решён - помечайте тему. |
|||
|
||||
Track |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 18.2.2010 Репутация: нет Всего: нет |
||||
|
||||
dzaraev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: нет Всего: 1 |
Незачто. Напомню на всякий случай, что MVP шаблон применяется в основном для GUI библиотек, подобных WinForms, MFC и т.д..
А для WPF и подобных фреймворков гораздо более подходящим является MVVM. --------------------
Если вопрос решён - помечайте тему. |
|||
|
||||
Zadnica |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 18.10.2013 Репутация: нет Всего: нет |
Это же нарушение инкапсуляции! Кто у вас такой код принимает??? |
|||
|
||||
Track |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 18.2.2010 Репутация: нет Всего: нет |
Здесь в первом посте пример кода
как разрешить редактирование компонентов UserContol в дизайнере http://www.gotdotnet.ru/forums/3/48474/238347/#post238347 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |