2011-10-08 10 views
0

MDI 형식을 세로로 분할하는 데 SplitContainer를 사용하고 있습니다. 왼쪽 패널에는 트리 컨트롤이 있고 오른쪽 패널에는 하위 폼이 표시됩니다. 나는 언제든지 아이 양식의 단일 인스턴스 만 열려 있도록 노력하고 있습니다. 그렇게하기 위해 나는 MdiChildren 수를 확인하고 있습니다. 그러나 분할 컨테이너의 오른쪽 패널에 하위 폼을 추가 한 후 mdi 자식 수는 0으로 다시 설정됩니다. 상기 코드 샘플 MDI 및 SplitContainer와 충돌

subjectForm.MdiParent = this; 
Console.WriteLine("B => " + this.MdiChildren.Length); 
this.splitContainer1.Panel2.Controls.Add(subjectForm); 
Console.WriteLine("A => " + this.MdiChildren.Length); 

이 제가

B => 1을 얻고 응답이고; A => 0

어디서 잘못 생각하나요?

+0

패널에 MDI 하위 창을 넣을 수 없습니다. Winforms는 예외를 throw하는 것을 잊어 버립니다. 이런 식으로하고 싶을 때 MDI를 사용하지 마십시오. –

+0

이것을 달성하는 다른 방법은 무엇입니까? 대신 분배기를 사용해야합니까? 그러나 MS는 그렇지 않으면 제안합니다. 또는 SplitContainer에서 올바른 패널을 제거 할 수있는 방법이 있습니까? – cosmos

+0

패널에 UserControl을 넣기 만하면됩니다. –

답변

0

SplitContainer를 사용하여 오랜 시간을 보내고 나면 스플리터로 교체하고 모든 것이 예상대로 작동합니다. 그러나 분할 컨테이너 컨트롤에 대한 유틸리티 나 필요성에 대해서는 아직 확실하지 않습니다.