Visual Studio 2005 дизайнер перемещает элементы управления и изменяет размеры формы - PullRequest
18 голосов
/ 21 июля 2009

Когда я открываю форму в Visual Studio 2005 (c #), дизайнер автоматически изменяет размеры формы и перемещает / изменяет размеры элементов управления, не касаясь дизайнера вообще. Исходный файл изменяется, и когда я закрываю дизайнер, меня просят сохранить файл * .cs. Я пытался изучить варианты визуальной студии без какого-либо успеха. есть идеи? визуальная настройка студии или что-то? Спасибо, Tal

Ответы [ 10 ]

10 голосов
/ 10 декабря 2010

Я работал над этой проблемой большую часть сегодняшнего дня и обнаружил несколько интересных вещей: кажется, что основной источник проблемы - это привязка. Если я использую док-станцию ​​для позиционирования своих элементов управления вместо привязки, мои проблемы, похоже, исчезнут. Я нашел пару постов в блоге 2003 года (!), В которых подробно описывается, как можно использовать закрепление вместо привязки, и объясняется, как закрепление может нарушить конструктор Windows Forms. Кажется, эта проблема может быть старше 7 лет!

Вот сообщения:

7 голосов
/ 06 апреля 2012

Это связано с AutoScaleMode -свойством. Ваши формы, вероятно, были разработаны с другими настройками DPI или шрифта, чем те, которые вы используете в настройках отображения Windows. AutoScaleMode -свойство имеет 4 возможных значения: Dpi, Font, Inherit или None. В режиме Dpi или Font размер ваших форм и элементов управления будет автоматически изменяться в зависимости от настроек отображения Windows.

Итак, установите для свойства AutoScaleMode значение None во всех ваших формах и элементах управления, и они больше не будут автоматически изменяться. Попробуйте создать формы так, чтобы в каждом элементе управления было достаточно места, чтобы текст помещался, даже если размер текста установлен на 125%.

4 голосов
/ 21 июля 2009

Я нашел работу вокруг.

не уверен, что происходит позади, но я изменил свои свойства дисплея. и работает нормально. здесь последовательность: показать свойства-> вкладка настроек-> продвижение. в предварительном диалоге я изменил «Настройки DPI» с Большой (120 точек на дюйм) на Нормальный (96 точек на дюйм)

2 голосов
/ 28 января 2016

Была такая же проблема с элементами управления, закрепленными сверху, слева и справа в сложных TabControls. Дизайнер форм Visual Studio увеличивал ширину всех вложенных элементов управления каждый раз, когда я открывал форму.

Я нашел простой обходной путь благодаря этому посту . Я просто добавил панель к каждой вкладке и установил их свойство док-станции для заполнения. Все существующие элементы управления на вкладках были перемещены внутри этих панелей. Это работает, даже если элементы управления закреплены сверху, слева и справа.

Работает как минимум для Visual Studio 2013 и 2015.

1 голос
/ 21 июля 2009

Это тот, с которым вы должны жить. Даже в VS2008 такие вещи случаются время от времени. В основном это зависит от содержимого формы (элементы управления, позиции и т. Д.), И в VS нет возможности отключить такое поведение.

Когда вы открываете форму в конструкторе, vs время выполнения перестраивает внешний вид из кода позади. И иногда он вносил изменения в этот момент. Также, когда вы просто добавляете один элемент управления в форму, конструктор полностью перестраивает код и файлы ресурсов. Это хорошо известная проблема, и похоже, что MS не исправит ее, потому что они движутся в направлении WPF.

Итак, несколько пунктов, чтобы упростить вашу жизнь:

  1. Перейдите к VS2008, дизайнер стал более последовательным, но все равно перемешал элементы управления в файле .designer.cs
  2. Поместите свой код в один из исходных репозиториев, поэтому, если вы случайно сохранили такую ​​форму, вы можете восстановить ее из репозитория.
0 голосов
/ 20 декабря 2017

У меня была эта проблема с VS 2015. Я использовал панели док-станции с элементами управления, которые неожиданно двигались как их дети. По умолчанию элементы управления будут выровнены влево, но вы можете изменить ориентацию. Мои кнопки перестали двигаться.

0 голосов
/ 08 января 2017

Я обнаружил, что блокировка элементов управления из меню форматирования была простым и эффективным решением. VS2013

0 голосов
/ 26 октября 2016

У меня была тривиальная форма с несколькими элементами управления, где ОК и Отмена внизу сдвигались вверх, как только форма открывалась в конструкторе VS2013. Такое же поведение наблюдалось в VS2015.

Принятый здесь ответ DPI не решил проблему для меня, и не было никаких проблем с размером формы / отступов / полей.

Удаление смещенных элементов управления и добавление их обратно в форму решило проблему для меня, как предложил ptutt здесь: Дизайнер Visual Studio перемещает элементы управления и добавляет столбцы сетки при открытии формы

Хотя я ценю предложение и рекомендации Rantant об использовании стыковки [с панелями], как это также упоминалось в ссылке выше в блоге Роланда здесь https://weblogs.asp.net/rweigelt/28984, с чем-то настолько тривиальным, я бы предпочел просто убрать его с удалением / добавлением обратно.

0 голосов
/ 14 апреля 2016

У меня тоже была эта проблема. Каждый раз, когда я открывал конструктор, каждое поле с якорем «вправо» перемещалось примерно на 20 пикселей влево. Кроме того, нижняя часть каждого поля с якорем «слева» находилась на расстоянии около 200 пикселей от формы.

Эта форма имеет много элементов управления и не должна сжиматься на небольших дисплеях, поэтому она была настроена на автоматическую прокрутку, сама форма была меньше в конструкторе, чем указанный минимальный размер (исторически ...). Я просто установил размер на минимальный размер, чтобы в конструкторе не появлялись полосы прокрутки, и якоря работали, как и ожидалось, не испортив позиции.

Я прочитал первый пост из ответа Райантма, который привел меня к решению. По-видимому, это как-то связано с порядком .Net выполняет такие события, как установка размера формы.

0 голосов
/ 20 мая 2014

Установка формы Min и Max size для текущего размера была хорошим решением для меня. Это помешало VS изменить его размер.

...