Подтвердить что ты не робот

Visual Studio Designer всегда пытается изменить мой контроль

У меня несколько сложный UserControl, и Visual Studio 2008 дает мне довольно безвредное раздражение при работе с ним. Каждый раз, когда я открываю элемент управления с помощью конструктора, он решает немедленно изменить некоторые безвредные значения, установленные дизайнером, а именно инициализацию свойств размера. Если я сохраню эти изменения, закрою и снова открою, он почти всегда будет решать, что другой компонент моего элемента управления изменит его первоначальный размер до бесконечности. К счастью, эти изменения безвредны, поскольку я использую автоматическую калибровку везде, но это очень раздражает, чтобы работать. У меня нет ничего странного в том, где начать выяснять, что происходит не так, моя единственная мысль прямо сейчас заключается в том, что Дизайнер при каждом открытии элемента присваивает результаты автоматического калибровки обратно в поля начального размера. Любые идеи о причинах/исправлениях?

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

4b9b3361

Ответ 1

Может быть, это может помочь:
Я заметил, что FormDesigner (без WPF, без Интернета и т.д.) Имеет странное поведение, если вы вставляете один пользовательский UserControl.
Существует случайное изменение других элементов управления (GroupBox, EditBox, ComboBox) (для меня это произошло с шириной).
Элементы управления, выбранные для изменения размера, кажутся случайными, но при перезапуске vs2010 он всегда один и тот же. Если удалено и повторно вставлено, дизайнер выбирает другой элемент управления, произвольно изменяя размер...

Я изменил свойство AutoScaleMode моего UserControl с "Font" на "Inherit", и это не повторилось.

Ответ 2

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

Добавьте это поверх объявления свойства:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

Это позволит разработчику игнорировать это свойство.

Ответ 3

У меня есть несколько схожая проблема. Я использую Infragistics GroupBox для пользовательского элемента управления, который унаследовал и теперь хочу изменить его внешний вид в производном классе. Я защитил его в базовом классе, поэтому он позволяет мне изменять свойства в производном классе. Но это не спасает. Каждый раз, когда я его открываю, я возвращаю те же старые значения базового класса.

Любая идея?

Изменить: Я понял это.

Попытка различного значения для одного из приведенных выше ответов. Использование [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] вместо [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] генерирует код для измененных свойств - и все работает по желанию.

Ответ 4

Попробуйте переопределить свойство DefaultSize вашего элемента управления.

От MSDN: Свойство DefaultSize представляет размер элемента управления, когда он изначально создан.