Форма WinForms с чрезвычайно большим шрифтом в среде с высоким разрешением при использовании объекта readonly Bru sh - PullRequest
0 голосов
/ 27 января 2020

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

https://docs.microsoft.com/en-us/dotnet/framework/winforms/high-dpi-support-in-windows-forms

В какой-то момент я столкнулся со следующей проблемой. Шрифты всех элементов пользовательского интерфейса становятся невероятно большими, когда я запускаю свой проект. Например, если у нас есть такая форма:

enter image description here

, я вижу это во время выполнения:

enter image description here

Свойства объекта Font формы во время выполнения указывают, что на самом деле это шрифт MS Sans Serif 15.75pt вместо шрифта по умолчанию размера 8.25pt (и, конечно, все элементы управления формы наследуют этот параметр).

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

private readonly Brush fBrushChecked = Brushes.LawnGreen;

Это известная проблема? Или я что-то не так делаю? Если последнее верно, как я могу использовать константу Bru sh в форме «правильного» способа избежать этого странного эффекта?


ОБНОВЛЕНИЕ. Если я инициализирую объект Bru sh в конструкторе формы таким образом

private readonly Brush fBrushChecked;

public Form1()
{
  InitializeComponent();
  fBrushChecked = Brushes.LawnGreen;
}

, проблема исчезнет.

...