Настройки конструктора WinForm Inheritance копируются в производную форму - PullRequest
0 голосов
/ 04 декабря 2009

Я испытываю раздражающее поведение в Visual Studio .NET 2008.

Мы создали базовую форму и базовую сетку, полученные из Infragistics UltraGrid.

В базовой форме мы установили некоторые свойства, такие как цвета, размер шрифта и т. Д. 1. Мы создаем новую форму Windows (т.е. DerivedForm) 2. Мы изменили наследование на BaseForm, просто добавив оператор using и изменив наследование в определении класса. 3. В этой среде IDE копирует все настройки свойств, которые вы видите в BaseForm.designer.cs, в DerivedForm.designer.cs. 4. Теперь, если мы внесем изменение в свойство BaseForm, оно будет переопределено существующими настройками, скопированными на шаге 3. Поэтому мы не увидим новое изменение в дочерней форме.

Пример того, что копируется, получен из BaseForm.InitializeControls (), как показано ниже, которое я нахожу в InitializeControls () производного класса Form:

//
// BaseForm_Fill_Panel
//
this.BaseForm_Fill_Panel.Location = new System.Drawing.Point(0, 47);
this.BaseForm_Fill_Panel.Size = new System.Drawing.Size(1095, 505);

Есть ли способ запретить среде IDE копировать свойства в дочернюю форму?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2009

Только мои 2цента ... Когда я создавал свои базовые классы, чтобы иметь однородную согласованность цветов, шрифтов, размеров и тому подобного, в своем определении базового класса я переопределил свойства, чтобы сделать их доступными только для чтения. Таким образом, когда исходная форма создается и включает в себя весь этот лишний мусор / раздувание, при первом ее компиляции она будет раздражать значение, доступное только для чтения, и потребует, чтобы вы удалили указанные строки. Затем любые последующие изменения любого из классов (включая шрифты только для чтения), ВСЕ формы, текстовые поля, метки, кнопки и т. Д. Будут отражать их. Такое переопределение только для чтения будет ...

[ReadOnly(true)]
public override Color ForeColor
{ get { return Color.Blue; } }


[ReadOnly(true)]
public override Font Font
{ get { return new Font(GDITFontBaseName, GDITFontBaseSize, FontStyle.Regular, GraphicsUnit.Point); } }

Я не знаю, действительно ли это то, что вы действительно пытаетесь достичь, но в моем деле это прекрасно работает.

0 голосов
/ 04 декабря 2009

Я только что попробовал его в 2005 году, он делает то же самое, поэтому я думаю, что он "работает как положено"

Редактировать:
Пока я не соберу .... Вы построили?

edit2:
Это поведение, которое я вижу. Дайте мне знать, если это то, что вы хотите, а если нет, то как вы хотите, чтобы это было иначе.

1. Создайте базовую форму, отредактируйте некоторое свойство, скажем background = blue
2. Создайте производную форму, свойство background будет синим
3. изменить базовую форму, скажем фон = красный
4. посмотрите на свойства производной формы. изменение от 3 не отражается (т.е. фон все еще синий).
5. строить
6. производная форма теперь отражает изменение от 3 (т.е. фон теперь красный)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...