2017-05-24 5 views
0

스레드 .NET/Windows Forms: remember windows size and location에는 양식의 크기와 위치를 저장하는 여러 솔루션이 제공됩니다. 그러나 모든 사용자는 FormClosing 이벤트 처리기에 정보를 저장하는 것이 좋습니다. 궁금합니다. FormClosed에 정보를 저장하는 데 문제가 있습니까? 그것이 내게 더 자연스러운 것 같습니다. 왜냐하면 그것은 우리가 양식이 닫히고있는 것이 확실한 사건이기 때문입니다. 테스트 할 때 두 가지 이벤트가 정상적으로 작동하는 것 같습니다.FormClosed에서 양식 크기와 위치를 저장할 수 있습니까?

+0

실제 창이 더 이상 존재하지 않더라도 그걸로 벗어날 수 있습니다. 많은 기본 속성 (Location, Size, WindowState)은 Form 클래스의 private 필드에 캐시됩니다. 따라서 getter는 winapi 호출을 통해 호출을 할 필요가 없으며 마지막으로 알려진 값을 갖습니다. 감각적 인, 잘, 누군가는 언젠가 그 부호를 읽고 그의 생활의 10 분이 맞을 수 있는지 생각해 볼 것이다. 너하기에 달렸다. –

+0

@HansPassant 요점은 여전히 ​​논리적으로 존재하기 때문이 아니라 캐시되어 있기 때문입니다. 나는 지금 나는 이해한다. –

답변

0

내게는 더 자연스러운 것 같습니다. 그 이유는 이것이 우리가 양식이 닫히는 이벤트이기 때문입니다.

FormClosingFormClosed 이벤트 직전에 발생합니다. FormClosing 이벤트에서 취소하지 않는 한, 여전히 닫힐 것임을 확신 할 수 있습니다. 당신은 자유롭게 리소스로 작업을 수행하기 위해이 이벤트를 사용할 수 있습니다

MSDN says 는 형태로 를 사용하고 정보를 양식에 입력 저장하거나 에게 부모의 양식을 업데이트 할 수 있습니다.

그러나 프로그램 시작 양식을 닫을 때 전체 응용 프로그램이 자동으로 종료되어야합니다.

눈치 챘 겠지만 대부분의 경우 작동합니다. 그러나 때때로 이상한 행동 (설정 저장 안함)이 발생할 수 있습니다.

크기와 위치를 저장하는 것과 관련하여 특히 해상도/크기가 다른 여러 모니터가있는 경우 고려해야 할 더 까다로운 사항이 있으므로 가능한 한 위험을 없애겠습니다. 따라서 FormClosed을 사용해야하는 특별한 이유가 없으면이 목적으로 FormClosing을 사용합니다.

+0

FormClosed가 전혀 일어나지 않을 가능성이 있습니까? –

+0

@ImperishableNight : 아니요, 확실합니다. 그러나 파일 핸들러를 저장하기 전에 응용 프로그램이 종료되면 몇 가지 문제가 발생할 수 있습니다 ... – CharithJ

+0

또한 앞으로는 양식의 기능을 확장하기 위해 FormClosing 이벤트에 다른 처리기를 추가한다고 생각합니다. 종결을 취소하십시오. 물론 폼이 실제로 닫히지 않아도 크기와 위치를 저장해도 아무런 해가되지 않습니다 ... 그렇기 때문에 FormClosing이 더 안전한 옵션 인 것 같습니다. –