Перемещение разработки со 100% масштабирования Windows на 150% рубит окно WinForms - PullRequest
0 голосов
/ 21 ноября 2018

Я использую C # Winforms в Visual Studio 2010. Так как я обновил свой ноутбук со старого ноутбука с разрешением 1366 x 768 до нового ноутбука с разрешением 1920x1080, я заметил проблему при продолжении разработки на новом ноутбуке.Я изолировал проблему до нового 150% масштабирования в ОС Windows (Windows на старом ноутбуке использовало 100% масштабирование).Когда я запускаю программу, правая часть окна странно обрезается.

Вот рабочая версия для старого ноутбука (ширина 1000 пикселей или 1500 пикселей в режиме Windows с масштабированием 150%):

old

А вот новая версия на новом ноутбуке с рубленым окном (1286 пикселей в ширину, когда оно должно быть 1500 из-за 150% масштабирования).

new

При немедленной загрузке проекта в новую настройку Windows с масштабированием 150% и запуске программы он работает нормально, но как только вы переместитесьодна из кнопок, так что VS обновляет код конструктора (кнопка 5 была перемещена, как вы можете видеть), а затем запускается, окно прерывается.

Даже при ручном входе в код Form1.Designer.cs,и настройка ClientSize на глупое высокое горизонтальное значение, такое как ClientSize = new System.Drawing.Size(3000, 709);, приводит к ширине окна, которая ограничена максимум 1286 пикселями.(Не так) по совпадению, 1286 - это около 1920 / 1.5.

В общем, что, черт возьми, происходит?Это похоже на ошибку в управлении масштабированием VS.Чтобы было ясно, проблема возникает при перемещении разработки со 100% масштабируемого экрана Windows на 150% масштабируемый экран Windows в любой системе.Вам не нужно два ноутбука, чтобы воспроизвести проблему, все они могут быть воспроизведены на одном ноутбуке (но убедитесь, что вы вышли из системы и в Windows после переключения с / на 100% или 150%).

НаконецЧтобы быть ясным, я знаю об установке значения DPI-осведомленного в true, используя файл app.manifest.Хотя это позволяет более четкий текст и решает проблему разбитого окна, я НЕ хочу идти по этому пути из-за несогласованных изменений в графическом интерфейсе моей программы, таких как перекрывающиеся элементы управления и неуместные элементы в некоторых настройках.

1 Ответ

0 голосов
/ 22 ноября 2018

На данный момент я нашел два полу-решения:

Первое - это обновление до Visual Studio 2017 (которое позволяет принудительно использовать 100% масштабирование в конструкторе VS Forms даже при 150% масштабировании Windows)

Второе соответствует предыдущей версии Visual Studio (включая VS 2010), но убедитесь, что в Windows установлено 100% масштабирование.Если вы только что изменили настройку масштабирования, обязательно выйдите из Windows и войдите в нее, чтобы обеспечить правильное применение масштабирования.

...