GetWindowPlaceace / SetWindowPlaceacace не работает в WinForms для высокого DPI

StackOverflow https://stackoverflow.com/questions/2608844

Вопрос

У меня есть устаревшее приложение WinForms, и я хочу сохранить положение окна и размеры через сеансы. Я использовал Getwindowplace а также Setwindowplace во время формирования и загрузки событий. Проблема, которую я получаю, это то, что при более высоких настройках DPI (например, среда, размер на 125%) размеры продолжают раздувать. Я позвоню SetWindowPlaceacace на нем определенным размером, но когда называется GetWindowPlace, эти цифры возвращаются на 25% больше, даже если окно было таким же размером. Такая же проблема существует при сохранении размера резкостируемого элемента в пределах формы.

Теперь это работает нормально, если я создаю новый проект WinForms: размер остается стабильным даже при запуске на более высоком DPI. Я предполагаю, что в кишечнике проекта есть некоторые устаревшие настройки в кишечнике или некоторую установку аркана.

Я позвонил IsprocessDpiaware. на обоих проектах, так и оба true. Отказ Кто-нибудь знает, что может заставить это?

Это было полезно?

Решение 2

Я нашел эту нарушенную настройку в файле .resx формы:

<data name="$this.AutoScaleBaseSize" type="System.Drawing.Size, System.Drawing">
  <value>5, 13</value>
</data>

Когда это было присутствует, VS автоматически изменит автоскалебазон для работы на твой DPI, но никто не. Для всех остальных форма будет постоянно расти или сокращаться.

Выбор автоскалемода = шрифт на панели «Дизайнер». Теперь это работает для всех DPI.

Другие советы

Похоже, вы как-то вызывают масштабирование, как выбрано свойством автоскалемода формы. Разница между вашими двумя проектами будет свойство AutoScaledimence, видимым в файле designer.cs.

Не уверен, почему это вызвало бы проблему, но класс формы уже использует GetWindowPaceaction () внутренне, рекреационные методы () () и ustateWindowState (). Чтобы получить реальную помощь, я предполагаю, что вам нужно будет опубликовать REPRO-проект где-то.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top