본문 바로가기
개발/C#

[C#][비주얼스튜디오] nullReferenceException

by 언제나초심. 2015. 11. 5.
반응형

null reference exception 에러가 난 경우에는, 원인이 너무 많습니다. 


이번에 제가 맞닥뜨린 경우에 대해서 적어볼까 합니다. 


메인 폼 -> A폼 


을 띄우고, A폼 에서 동작을 하게 되는 상황이었는데요. 


A폼.Show() 


이후에, 바로 꺼져버리면서, 널 리퍼런스 에러 를 띄우더군요.


구문을 하나하나씩 확인해본 결과,


제가 하려던 목표가, 폼의 사이즈를 가져와서, 특정 폼의 요소에 반영하는 것이었는데요. 


이것을 어디에 넣는가 가 문제가 되었습니다. 


1. Load 이벤트

2. Resize 이벤트

3. Move 이벤트 


세 가지에 각각 특정 메서드 들이 들어가 있었는데, 발동되는 과정에서 착오가 있었더군요.


생각과는 다르게, 

Load 이벤트가 불리우기 전에, Resize, Move 이벤트가 불리는 것 같습니다. 

더 정확히는 Move 이벤트가 불려지는 것 같기는 하더군요.


결론적으로는, 멤버변수 loaded 를 만들고, 기본값으로 false 를 넣은 후에.


Load 이벤트가 끝날 즈음에 loaded = true 를 해줍니다. 


그리고, 다른 이벤트에서 if(loaded) 일 때에, 동작되도록 처리를 하였네요.





[그외의 다른팁]


아실 분은 아시겠지만, 더 알아낸 것에 대해서도 적어봅니다. 


윈도우의 환경에서 텍스트 크기를 늘렸거나, [바탕화면] -[개인설정] -[디스플레이] 설정에서 중간(M) 또는 크게(L) 과 같이 환경을 바꾼 경우에 이슈가 있더군요.



생성자에 있는 사항은, 윈도우의 환경에 맞게 폼의 크기가 변경된 상태가 아니기 때문에, 문제를 발생시킬 수가 있습니다. 


Load 이벤트나, 그 이후의 이벤트 에서 처리를 해주면 되더군요.


반응형