Почему мои диалоговые окна слишком малы на некоторых (но не на всех) компьютерах с Windows7? - PullRequest
7 голосов
/ 08 августа 2011

Я начинаю тестировать приложение Winforms (с использованием VS2008) в Windows 7 и вижу странную проблему.

Оно работало нормально на первой паре установок Win7, но на следующих двух,многие из моих диалогов слишком малы, обрезая содержимое примерно на 30%.

Приложение было разработано на WinXP и не сталкивалось с этой проблемой на любых установок XP!

Просто начинаю исследовать проблему - не располагайте подробной информацией о различиях между системами, которые работают, и системами, которые еще не работают.

Редактировать

Согласно комментарию Кейт к одному из ответов, Win7 иногда изменит свой размер текста при установке нового монитора.У машины с проблемой есть большой широкоэкранный монитор, и когда мы проверили (Панель управления + Дисплей + Пользовательский размер текста) - конечно же, - пользовательский размер текста был установлен на 125%.Если установить значение 100%, проблема исчезнет.

Затем я смог воспроизвести проблему на WinXP, установив размер текста на 125%.

Таким образом, теперь возникает вопрос - Как вы гарантируете, что приложение Winforms «не зависит от размера пользовательского текста»?

/ Edit

Как предлагается, вот несколько снимков экрана.Первый - с компьютера с Windows 7, второй - с моей системы разработки WinXP.

Windows 7

Windows XP

Ответы [ 3 ]

3 голосов
/ 09 мая 2015

У меня была такая же проблема, когда пользователь Win 7 настраивал размер шрифта по умолчанию в «Панели управления \ Все элементы панели управления \ Отображение»

Когда у вас есть формы, для которых установлено «Фиксированный диалог», задайте следующие свойствав вашей форме:

2 голосов
/ 08 августа 2011

Размер дисплея, разрешение, DPI, большие шрифты, мелкие шрифты - вот некоторые возможные причины.

1 голос
/ 09 августа 2011

Несмотря на то, что DPI и темы экрана могут изменять размер элементов управления, здесь это не проблема, поскольку на снимках экрана размеры элементов управления Chrome и нетекстовых элементов неизменны.Проблема в том, что вы не учитываете пользовательские размеры шрифтов.

Если вы хотите переместить элементы управления, чтобы зафиксировать их в фиксированном размере формы, вам придется выполнять вычисления, используя свойство Control.AutoScaleDimensions элементов управления.Это большая работа, не делайте этого.

Вместо этого выложите элементы управления, используя абсолютные координаты, и увеличьте форму, чтобы она содержала результаты.Установите ваши формы 'AutoScaleMode = AutoScaleMode.Font.

...