Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с наследованием свойств 
:(
    Опции темы
Voyager
Дата 30.3.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 3
Всего: 18



Есть форма FormA и FormB. На форме FormA есть компонет, допустим, PanelControl (public).
Форма FormB наследуется от FormA (FormB : FormA).
У PanelControl в форме FormA свойства

Код

            this.Header.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
            this.Header.Appearance.BackColor2 = System.Drawing.Color.Silver;
            this.Header.Appearance.Font = new System.Drawing.Font("Segoe UI", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
            this.Header.Appearance.Options.UseBackColor = true;
            this.Header.Appearance.Options.UseFont = true;
            this.Header.Appearance.Options.UseTextOptions = true;
            this.Header.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
            this.Header.Dock = System.Windows.Forms.DockStyle.Top;
            this.Header.Location = new System.Drawing.Point(0, 0);
            this.Header.LookAndFeel.UseDefaultLookAndFeel = false;
            this.Header.LookAndFeel.UseWindowsXPTheme = true;


Почему после наследования в FormB (если делать какие-либо изменения в дизайнере) свойства PanelControl становятся:

Код

            this.Header.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
            this.Header.Appearance.BackColor2 = System.Drawing.Color.Silver;
            this.Header.Appearance.Font = new System.Drawing.Font("Segoe UI", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
            this.Header.Appearance.Options.UseBackColor = true;
            this.Header.Appearance.Options.UseFont = true;
            this.Header.Appearance.Options.UseTextOptions = true;
            this.Header.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
            this.Header.LookAndFeel.UseDefaultLookAndFeel = false;
            this.Header.LookAndFeel.UseWindowsXPTheme = true;


То есть свойства переписываются заново (копируются из FormA), а не наследуются по умолчанию (точнее наследуются вначале, но после изменений в дизайнере, например, размера, переписываются). Что это - особенность студии или что-то еще? Ведь если изменить в форме FormA свойства панели, то они не отобразятся в FormB, какое же тут наследование, может кто объяснить?
PM   Вверх
Naum
Дата 30.3.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Насколько я знаю, наследование не подразумевает установку значений свойств и полей. Для установки значений свойств и полей в конструкторе класса-потомка нужно вызывать конструктор класса-предка.
А еще, для того, чтобы дизайнер знал, какие значения у свойтсв по умолчанию, нужно такие свойства пометить аттрибутом
DefaultValue()


Это сообщение отредактировал(а) Naum - 30.3.2007, 10:25


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Voyager
Дата 30.3.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 3
Всего: 18



Но если я использую просто компоненты и изменяю их свойства, зачем мне ставить DefaultValue, дело не совсем в этом, дело в том, что в наследуемой форме студия "копирует" свойства из базовой формы.
PM   Вверх
mr.DUDA
Дата 30.3.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Можно попробовать поставить Modifier=protected для всех наследуемых свойств. В отдельных случаях это помогает избежать дублирования кода в InitializeComponent.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.