2009-07-13 6 views
3

이것은 .Net WinForm 질문에 대한 MDI 설정입니다.PropertyStore 및 MDI 자식 폼 정보

주 폼이 MDI 자식 폼을 만들 때 주 폼의 PropertyStore은 MDI 자식 폼에 대한 참조를 보유합니다. 이것이 닫혀 있어도 이것이 자식 폼을 살아있게 할 수 있을지 궁금합니다. 그렇다면이 참고 문헌을 삭제하기 위해 아동 양식을 폐기 할 때 무엇을해야합니까?

자식 양식은 샘플 코드에 의해 호출됩니다

//The code is in the main form. 
var f = new FormMDIChild(); 
f.MdiParent = this; 
f.Show(); 

답변

2

나는 비슷한 문제에 봉착했습니다. 나는이 forum post이 문제를 논의하고 솔루션을 제안했지만 솔루션이 나에게 효과적이지 않으므로 리플렉션을 사용하여 속성을 찾을 수없는 것처럼이 속성이 최근 서비스 팩에서 제거되었는지 확신 할 수 없다는 것을 알았습니다. 주위를 둘러보고 다른 해결책을 찾으면 알려 드리겠습니다.

7

레코드의 경우 참조 된 게시물에 제공된 솔루션이 작동합니다 (약간의 위험은 있지만). 그러나 다른 자식 폼을 열고 닫으면 누수가 없어져 MDI 부모는 마지막으로 열린 자식 만 누수합니다.

방금 ​​MDIParent의 OnMdiChildActivate 메소드를 오버라이드 (override) 해, 주위에 참조 된 게시물에 언급 된 작업을 사용하여 누수를 해결하려면 ...

protected override void OnMdiChildActivate(EventArgs e) 
{ 
    base.OnMdiChildActivate(e); 

    typeof(Form).InvokeMember("FormerlyActiveMdiChild", 
     BindingFlags.Instance | BindingFlags.SetProperty | 
     BindingFlags.NonPublic, null, this, new object[] { null }); 
} 
관련 문제