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 이벤트나, 그 이후의 이벤트 에서 처리를 해주면 되더군요.
'개발 > C#' 카테고리의 다른 글
C# 액세스 한정자 (0) | 2020.02.14 |
---|---|
[C#] securitypermission(securityaction.linkdemand flags = securitypermissionflag.unmanagedcode) (0) | 2016.07.28 |
[비주얼 스튜디오] [c#] UriFormatException FileNotFoundException WebException 세 가지가 다 나오는 경우 (0) | 2015.11.04 |
[C#][Visual Studio] 메니페스트 서명 인증서를 찾을 수 없습니다 (0) | 2015.10.28 |
[C#] 새창 띄우기 (0) | 2012.10.01 |
[C#] MessageBox (0) | 2012.09.30 |