전에는 Win Form 계열 작업을 하다가, 요즘은 여러가지 사건으로 개발을 한참 안했다.
그러던 중 최근에 Win Form으로 테스트 프로그램을 짜보려했는데, 갑자기 어느 순간 부터 Form 위에 컨트롤을 Drag & Drop을 하려니까 이상한 오류가 발생했다.

Win Form Designer 는 실제 화면과 매우 유사하게 표시되기 때문에, 꽤 직관적으로 잘 만들 수 있어 좋아했는데, 갑자기 위와 같이 "Object reference not set to an instance of an object."라고 뜬다. 물론 저 오류가 난 뒤, 마우스 커서가 바뀌어 있어, WinForm위에서 드래그하면 분명 컨트롤이 생기긴 했다. 하지만, 과거 직관적으로 바로 컨트롤이 붙었었는데, 갑자기 오류 나면서 안되니, 은근 스트레스였다.

 

문제 원인

사실 이 부분을 찾기는 쉽지 않았다. 원래 위와 같은 오류는 다양한 원인으로 Visual Studio에서 나왔던 오류였고, 해당 오류들은 내가 처한 상황과 맞지는 않았다.(ASP.NET 컨트롤 연결 문제, Visual Studio 디자이너 관련 정보 캐쉬 오류, 솔루션 설정 문제 등등)

그러다가, 우연히 멀티모니터 그것도 DPI 를 동일하게 만들자 문제가 없어졌다는 문장을 보게되었다. 혹시나 하는 마음에, 모든 모니터의 해상도를 Full HD(1920 X 1080)으로 맞추고 DPI에 대한 배율을 100%로 변경해보았다. 그러자 언제 그랬냐는 듯이 아무 문제없이 컨트롤이 붙었다. 즉 멀티모니터를 사용하고 있을 때, 1개의 모니터라도 DPI 배율이 다른 것이 있는 경우 이와 같은 오류가 발생한다. 내 개발 PC는 3개의 멀티모니터를 사용하고 있고, 모니터 2개는 4K로 하고 150%로 했으며, 하나는 Full HD로 했으며, 100%로 사용하고 있었기 때문에, 이 문제가 발생한 것이였다.

이번 문제를 계기로 든 생각은, 점점 WPF 든, UWP 든 UI 개발 방법을 변경할 시점이 점점 다가오는 것 같다. 더 이상 Win Form 기반의 개발에는 한계가 늘어날 수 밖에 없을 것 같다.

 

728x90

+ Recent posts