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

Ваш аккаунт

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

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

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

наследование Windows Forms...

489
30 июля 2008 года
NeO_u
277 / / 11.10.2006
Собственно сабж.
Не подскажите как решить проблемку:
написал я форму, скажем так, ядро. От нее наследую все остальные формы. В главное форме куча компонентов. А проблема заключается в том, что при создании новой формы и наследовании ее от главной, происходит дублирование объектов главной формы в дочерней. Т.е. появляется отдельный объект Меню, Коллекция рисунков и дублируются ресурсы.
Как можно избавиться от этого копирования? Подскажите пожалуйста.

ЗЫ: Заранее спасибо:-).
40K
31 июля 2008 года
SlavaMov
1 / / 05.06.2008
Самый простой способ избежать клонирования ресурсов - создать статический(можно и не статический но нужен будет всеголишь один объект) класс, без наследования, в котором описаны все control-ы с доступом public, они все инициализируются до использования (при старте программы, открытии первой формы и т.п), а также описать в этомже классе две функции с параметром типа System.Windows.Forms.Form, одна из которых добавляет все компоненты на форму (должна вызываться в конструкторе каждой открываемой формы), а вторая удаляет ети же компоненты из списка контролов формы(должна быть вызвана перед закрытием формы, так как вместе с формой освобождаются все используемые ею ресурсы). Если несколько форм будут использоваться одновременно, то вызов функций добавления и изъятия контролов должен быть описан в обработчиках событий формы activated и deactevate. Хотя при этом для пользователя будет странно, почему меню, рисунки и т.д. исчезают при переключении окон и появляются вновь. Но другого пути не клонировать объекты нет.
Если же речь идет только о рисунках и текстах надписей, то достаточно создать у главной формы файл с разрешением *.resx (впринципе при создании формы дизайнером он создается сам) и открыв его в Visual Studio добавить все ресунки и тексты. Далее в каждой форме при помощи спецыальных комманд (могу написать, если понадобиться) изымать эти рисунки и тексты. Они не будут дублироваться.
5
31 июля 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: NeO_u
Собственно сабж.
Не подскажите как решить проблемку:
написал я форму, скажем так, ядро. От нее наследую все остальные формы. В главное форме куча компонентов. <...>
Как можно избавиться от этого копирования? Подскажите пожалуйста.

Дык, наследование! Это ж ООП!
Тогда разделите класс формы-ядра на два класса: пронаследуйте еще один класс формы, который будет содержать интерфейсные элементы и служить главной формой. А базовый класс будет содежать лишь самый общий для всех форм проекта код. Это стандартный подход.

489
01 августа 2008 года
NeO_u
277 / / 11.10.2006
Да я так пытался сделать. Но проблема в том, что если на родительской форме есть хоть какой-т объект, буть то меню или еще что нибудь, и есть реализация этого меню, то интерфейс сделать не получиться.

А при наследовании, в C# происходит дублирование всех ресурсов...

ЗЫ: Решил перейти на MDI приложение и не парить себе мозги:-)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог