2012-05-26 2 views
0

Я разработал проект, содержащий некоторые формы. Проблема в том, что он не отображается правильно на широких мониторах. Я искал его и выяснил, что она работает правильно для точек на дюйм = 96. I точек на дюйм изменения хочет с помощью реестра в vb.net (не вручную) Вот код, я использую:Измените параметры настройки тэга через реестр программно?

Dim dpi As Graphics = Me.CreateGraphics 
    If (dpi.DpiX <> 96 And dpi.DpiY <> 96) Then 
     Dim DPISetting As RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("HKEY_CURRENT_USER\Control Panel\Desktop\WindowsMetrics", True) 
     DPISetting.SetValue("AppliedDPI", 96) '** 
    End If 

Но я получаю исключение nullRefrence Exception в строке с **. В экземпляре объекта не задана ссылка на объект. Я действительно работал над этим в течение долгого времени, но не мог найти, в чем проблема. Я был бы так благодарен, если у вас есть какие-либо предложения или решения для этого.

+2

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

ответ

2

Эта конструкция принципиально нарушена.

Your application should not change a global system setting just to work around a bug in the code. Это хороший способ, чтобы гарантировать, что пользователи будут немедленно деинсталлировать приложение и никогда не использовать его снова. Если вам повезет, они не скажут своим друзьям. Тебе обычно не очень повезло.

Вместо того, чтобы пытаться заставить ваш хак работать, почему бы не исправить реальную проблему? Если ваша форма не отображается правильно при высоких (или низких) настройках DPI, вам необходимо заставить ее работать в этих сценариях. Это часть разработки настольных приложений - убедитесь, что ваше приложение работает в гетерогенных средах.

С этой целью вы можете найти советы в этих ответах полезные:

+0

Ну, я чувствовал, что изменить настройки реестра немного странно. Я также думал об использовании AutoScaleMode.dpi. Теперь, когда вы предположили, что я уверен. Спасибо за полезный совет. – butterfly

Смежные вопросы