Изменение шрифта по умолчанию в Windows портит мои кнопки Win Forms - PullRequest
1 голос
/ 14 января 2009

У нас есть коллекция приложений на C # (.NET 2.0), которые имеют настраиваемые диалоговые окна. Когда пользователь изменяет размер шрифта по умолчанию, разрешение и т. Д. В Windows, края формы теряют элементы управления (они отталкиваются от видимой части формы), как правило, выпадающие кнопки снизу. Это проблематично для нас и вызовет проблемы в других приложениях, использующих стандартную инфраструктуру внешнего вида, которую мы создаем вокруг этих приложений.

Как бы вы сделали все свое приложение независимым от изменений шрифтов Windows? Как бы вы интегрировали это в несколько решений?

Или, что еще лучше, как можно адаптировать все приложение, чтобы можно было подстраиваться под изменения внешнего вида Windows?

Ответы [ 2 ]

3 голосов
/ 14 января 2009

WinForms имеют свойство AutoScaleMode, которое может быть установлено в Font, DPI, Inherit или None. По умолчанию используется «Шрифт», который, по моему опыту, не всегда правильно масштабирует. Вы можете попробовать один из других вариантов (возможно, «Нет», если вы вообще не хотите, чтобы ваша форма масштабировалась?)

Что касается того, чтобы сделать все приложение способным к самонастройке, посмотрите на опцию «Inherit» (вам все равно нужно установить что-то кроме «Inherit» в родительской или стартовой форме приложения).

0 голосов
/ 14 января 2009

Вы можете обработать событие SystemEvents.UserPreferenceChanged в пространстве имен Microsoft.Win32. Параметр UserPreferenceChangedEventArgs будет иметь категорию из UserPreferenceCategory.Window при изменении системного шрифта. Я думаю, что вам придется запустить ручную компоновку окна и перерисовать в ответ на это событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...