Почему Visual Studio 2017 продолжает испортить мою форму [дубликат]

18
задан tal 21 July 2009 в 13:42
поделиться

10 ответов

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

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

4
ответ дан tal 27 August 2018 в 05:43
поделиться
  • 1
    это ужасно, что дизайнер IDE зависит от вашего DPI экрана. Жаль это слышать. :( – Saul Dolgin 21 July 2009 в 14:50
  • 2
    Из многих ужасов, совершенных Windows, «настройки DPI» являются одним из худших. Этот параметр вызывает больше проблем с большим количеством приложений, чем почти все, что я видел. – Stewbob 21 July 2009 в 21:46

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

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

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

  1. Перейти к VS2008, конструктор были более согласованными, но все еще перемешали элементы управления в файле .designer.cs
  2. Поместите свой код в один из исходных репозиториев, поэтому, если вы случайно сохранили такую ​​форму, вы можете восстановить ее из репозитория.
1
ответ дан arbiter 27 August 2018 в 05:43
поделиться
  • 1
    спасибо арбитру. -хорошо, переход на 2008 год не имеет отношения к моему проекту (в это время слишком много кода). – tal 21 July 2009 в 14:48
  • 2
    VS2005- & gt; 2008 миграция не является проблематичной вообще. – Tamás Szelei 21 July 2009 в 15:17
  • 3
    Это все еще проблема в VS2010 – ryantm 9 December 2010 в 22:32
  • 4
    да, у меня есть проблемы в vs2010 - но, как предлагает RyanTM, мои проблемы ушли, так как я обменялся привязкой к стыковке .... – womd 3 October 2011 в 15:32

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

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

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

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

0
ответ дан Community 27 August 2018 в 05:43
поделиться

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

0
ответ дан Joe Kar 27 August 2018 в 05:43
поделиться

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

0
ответ дан Kevin Gale 27 August 2018 в 05:43
поделиться

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

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

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

-2
ответ дан Michael Müller 27 August 2018 в 05:43
поделиться

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

-1
ответ дан Nico 27 August 2018 в 05:43
поделиться

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

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

10
ответ дан ryantm 27 August 2018 в 05:43
поделиться
  • 1
    Элементы управления в моей форме постоянно искажались дизайнером - проблема все еще существует в VS 2012. Переключение на стыковку, похоже, остановило его. – pettys 4 December 2012 в 23:44
  • 2
    Ух, все еще проблема в VS2013, спасибо за это, это действительно помогло. – heisenberg 3 November 2014 в 17:57

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

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

7
ответ дан Spontifixus 27 August 2018 в 05:43
поделиться
  • 1
    Кажется, сделал это для меня. Мне пришлось отредактировать * Form.Designer.cs, чтобы изменить this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; , и удалите this.AutoScaleDimensions = новый System.Drawing.SizeF (6F, 13F); (обе строки объединены в файле .Designer.cs) – Jimmy 3 February 2017 в 16:10

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

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

Работает, по крайней мере, для Visual Studio 2013 и 2015.

2
ответ дан ZuBsPaCe 27 August 2018 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: