Странное поведение в приложении Windows Forms, работающем с разными настройками DPI - PullRequest
3 голосов
/ 23 марта 2011

У меня есть приложение Windows Forms (написано в vs2010 / C # против .NET Framework 3.5) с одной основной формой. Он был разработан с настройкой 100% DPI в Win7 (я думаю, что это 96 точек на дюйм). При переключении компьютера на 150% все выглядит нормально и все пропорции сохраняются.

Однако, когда я переключаюсь на 125%, некоторые элементы управления внезапно не масштабируются и кажутся такими же большими, как и при 100%. Это портит весь макет и скрывает некоторые элементы управления от пользователя.

Есть ли какое-либо логическое объяснение большой разницы в поведении между настройками 125% и 150%?

Кроме того, есть ли более быстрый способ проверить это? Необходимость выходить из системы и снова входить в нее каждый раз, когда я переключаюсь, быстро раздражает.

Ответы [ 4 ]

3 голосов
/ 23 марта 2011

Нет простого объяснения того, что вы наблюдаете.

Дешевый способ проверить это без необходимости проходить через болезненный цикл входа в систему - это изменить свойство Font формы в методе OnLoad:

    protected override void OnLoad(EventArgs e) {
        this.Font = new Font(this.Font.FontFamily, this.Font.SizeInPoints * 120f / 96f);
        base.OnLoad(e);
    }
2 голосов
/ 23 марта 2011

Посмотрите на AutoScaleMode формы . Вероятно, он установлен на шрифт или Dpi

0 голосов
/ 27 августа 2014

В отношении «Кроме того, есть ли более быстрый способ проверить это? Необходимость выходить из системы и входить в нее каждый раз, когда я переключаюсь, быстро раздражает».

Лучше всего использовать виртуальную машинус другими настройками DPI.Вы просто запускаете приложение с «реальной» машины.

0 голосов
/ 23 марта 2011

Добавить к сообщению Джона Арлена:

Вы также можете разрешить форме увеличиваться и уменьшаться, используя AutoSizeMode .

...