2013-07-31 2 views
2

У меня есть сетка свойств Winforms, размещенная внутри WindowsFormsHost. Все работает чудесно, пока вы не измените настройки DPI в окнах, или используете монитор с очень высоким DPI.Winforms свойство grid high dpi ui overlap

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

enter image description here

(Обратите внимание, как значение метки не «взорваны», как имя этикетки?) Я попробовал все, что я могу думать, что это связано с DPI. Установка AutoScaleMode на PropertyGrid, Удаление отображения собственности от хоста, Установка UseCompatibleTextRendering и т.д. ...

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

Я попытался воспроизвести это в пустой WPF-приложении, но не смог этого сделать. У кого-нибудь есть идеи? Я исчерпал все свои ресурсы и навыки Google безрезультатно.

Благодаря

Simon

Edit: Incase это уместно, я поставил "Изменить размер всех элементов" под Панель управления -> Экран для "Большой - 150%". Используя Windows 8, вы также заметили проблему на других платформах.

+0

Можете ли вы воспроизвести это с помощью примера winforms app? Я не могу. –

+0

Довольно трудно объяснить. Ищите проглоченные исключения, Debug + Exceptions, установите флажок «Бросок» для исключений CLR. Инструменты + Опции, Отладка, Общие, Отключить только мой код. –

+0

Не проглотил исключения. Боюсь. Я не смог воспроизвести это (все еще пытаюсь). Забыл упомянуть, что это проект WinForms с приложением WPF. – Simon

ответ

1

Оказывает то, что вызывало проблемы с DPI, было instanciation System.Windows.Forms.WebBrowser, закомментируйте/удалите этот элемент управления из одного из наших пользовательских элементов управления и вуаля, все хорошо.

Это отвечает на мой вопрос, моя проблема решена. Хотя мне все еще очень интересно узнать почему это происходит. (Не спрашивайте меня, сколько часов я потратил хватаясь за соломинку, прежде чем найти это)

Я мог бы добавить, что в то время как это определенно доказано, что источником моего вопроса, я не был в состоянии воспроизвести это в меньшем приложении.

2

У меня есть одна и та же проблема - для меня лучшим способом было отключить понимание DPI в приложении. И наилучшим способом сделать это было с этой целью AssemblyInfo

[assembly: DisableDpiAwareness] 
Смежные вопросы