Visual Studio Designer всегда пытается изменить мой контроль - PullRequest
18 голосов
/ 28 апреля 2009

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

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

Ответы [ 4 ]

10 голосов
/ 25 июля 2011

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

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

5 голосов
/ 28 апреля 2009

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

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

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

Это скажет дизайнеру игнорировать это свойство.

1 голос
/ 28 апреля 2009

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

Есть идеи?

Редактировать: Я понял это.

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

0 голосов
/ 30 апреля 2009

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

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

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