Я нашел работу.
не уверен, что происходит, но я изменил свои свойства отображения. и он отлично работает. вот последовательность: display propertis-> settings tab-> advance. в диалоговом окне предварительного перехода я изменил «Настройки DPI» с Большого (120dpi) на Normal (96 dpi)
Это тот, с которым вы должны жить. Даже в VS2008 такие вещи случаются время от времени. В основном это зависит от содержимого формы (элементов управления, позиций и т. Д.), И в VS нет возможности отключить такое поведение.
Когда вы открываете форму в дизайнере, vs runtime восстанавливает визуальный внешний вид из кода , И иногда это делало изменения в этот момент. Также, когда вы просто добавляете один элемент управления в форму, дизайнер полностью перестраивает файлы кода и ресурсов. Это хорошо известная проблема, и кажется, что MS не будет ее исправлять, потому что они перемещаются в направлении WPF.
Итак, несколько пунктов, чтобы упростить вашу жизнь:
У меня была тривиальная форма с несколькими элементами управления на ней, где ОК и Отмена внизу были сдвинуты, как только форма была открыта в дизайнере VS2013. Такое же поведение наблюдалось в VS2015.
Принятый здесь ответ DPI не решил проблему для меня, и не было никаких проблем с размером формы / отступов / полей.
Удаление элементов управления, которые сдвинуты и добавление их обратно в форму, решило проблему для меня, как предложено здесь ptutt: Элемент управления дизайнером Visual Studio и добавление столбцов сетки при открытии формы
Хотя я ценю предложение ryantum и ссылки на использование стыковки [с панелями], как это также упоминается в ссылке выше с сообщением в блоге Роланда https://weblogs.asp.net/rweigelt/28984 , с чем-то таким тривиальным, я бы предпочел просто уйти с удалением / добавлением обратно.
Я обнаружил, что блокировка элементов управления из меню формата была простым и эффективным решением. VS2013
Установка параметров Min и Max для текущего размера была хорошей работой для меня. Это предотвратило изменение размера VS.
У меня тоже была эта проблема. Каждый раз, когда я открывал конструктора, каждая коробка с якорем «справа» перемещалась примерно на 20 пикселей влево. Кроме того, нижняя часть каждой коробки с якорем «левая» была около 200 пикселей вне формы.
Эта форма имеет много элементов управления и не должна уменьшаться на меньших дисплеях, поэтому она была настроена на автосканирование, сама форма был меньше в дизайнере, чем показанный минимальный размер (исторически ...). Я просто установил размер минимального размера, чтобы в дизайнере не появлялись полосы прокрутки, и якоря работали, как ожидалось, без зависания постов.
Я прочитал первый пост из ответа ryantm, который привел меня к решение. По-видимому, это как-то связано с порядком .Net выполняет такие события, как установка размера формы.
У меня была эта проблема с VS 2015. Я использовал панели док-станции с элементами управления, которые неожиданно двигались как их дети. По умолчанию элементы управления будут выровнены влево, но вы можете изменить ориентацию. Мои кнопки перестали двигаться.
Я работаю над этой проблемой на протяжении большей части сегодняшнего дня и нашел интересные вещи: главный источник проблемы, похоже, полагается на привязку. Если я использую стыковку для установки своих элементов управления, вместо привязки, мои проблемы, похоже, уходят. Я нашел пару сообщений в блогах с 2003 года (!), В которых подробно описывается, как использовать докинг вместо привязки и объяснять, как привязка может нарушить конструктор Windows Forms. Кажется, эта проблема может быть старше 7 лет!
Вот сообщения:
Это связано с AutoScaleMode
-property. Вероятно, ваши формы были разработаны с различными настройками DPI или Font, чем у вас сейчас в настройках дисплея Windows. AutoScaleMode
-property имеет 4 разных возможных значения: Dpi
, Font
, Inherit
или None
. В режиме Dpi
или Font
ваши формы и элементы управления будут автоматически изменяться в зависимости от настроек отображения в окне.
Итак, установите AutoScaleMode
-property в None
во всех ваших формах и элементах управления и они больше не будут автоматически изменены. Попробуйте создать свои формы, чтобы обеспечить достаточное пространство в каждом элементе управления, чтобы текст соответствовал, даже если размер текста установлен на 125%.
Имела ту же проблему с элементами управления, закрепленными сверху, слева и справа в сложном TabControls. Дизайнер визуальных студийных форм увеличивал ширину всех вложенных элементов управления каждый раз, когда я открывал форму.
Я нашел простую обходную задачу благодаря этой записи . Я просто добавил панель к каждой вкладке и установил ее свойство док-станции для заполнения. Все существующие элементы управления внутри вкладок были перемещены внутри этих панелей. Это работает, даже если элементы управления закреплены сверху, слева и справа.
Работает, по крайней мере, для Visual Studio 2013 и 2015.