2012-05-26 2 views
0

몇 가지 양식이 포함 된 프로젝트를 디자인했습니다. 문제는 와이드 모니터에서 올바르게 표시되지 않는다는 것입니다.프로그래밍 방식으로 레지스트리를 통해 dpi 설정을 변경합니까?

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 

하지만 얻을 : 나는 (안 수동) 여기 내가 사용하는 코드입니다 그것을 검색하고 vb.net에서 레지스트리를 통해 dpi의 = 96 I 싶어 변화 dpi로 올바르게 작동하는 것을 발견했습니다 **가있는 행에서의 nullRefrence 예외. 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 나는 정말로 오랜 시간 동안 그 일을 해왔지만 문제가 무엇인지를 알 수 없었다. 당신이 그것에 대한 제안이나 해결책을 가지고 있다면 나는 매우 감사 할 것입니다.

+2

이 앱을 설명하기 위해 넓은 사용자 dpi의 시스템을 변경하는 학대 보인다이를 위해

, 당신은 도움이 답변의 조언을 찾을 수 있습니다 귀하의 응용 프로그램에서 디자인 문제. –

답변

2

이 디자인은 근본적으로 고장입니다. 사용자가 즉시응용 프로그램을 제거하고 다시 사용하지 않을 것이라는 점을 보장 할 수있는 좋은 방법입니다

Your application should not change a global system setting just to work around a bug in the code.. 운이 좋다면 친구들에게 말하지 않을 것입니다. 대개 운이 좋지는 않습니다.

해킹 작업을 시도하는 대신 실제 문제를 해결하지 않는 이유는 무엇입니까? 양식이 높은 (또는 낮은) DPI 설정에서 올바르게 표시되지 않으면 해당 시나리오에서 작동하게해야합니다. 이는 데스크톱 응용 프로그램 개발의 일부로, 이기종 환경에서 응용 프로그램이 작동하는지 확인합니다.

+0

글쎄, 나는 레지스트리 설정을 변경하는 것이 약간 이상하기 전에 느꼈다. AutoScaleMode.dpi 사용에 대해서도 생각했습니다. 이제 내가 확신한다고 제안 했으니 까. 유용한 조언을 주셔서 감사합니다. – butterfly