2010-07-12 2 views
1

winforms MDI 창을 사용하고 하위 창을 표시합니다. 모달 대화 상자 모드 (.ShowDialog())를 사용하여 일부를 표시해야하지만 여전히 하위 창 (부모 창 테두리 내에 있어야 함)로 표시해야합니다.MDI 하위 창을 .ShowDialog()로 표시 할 수 없습니다. 이유는 무엇입니까?

이 작업을 시도하면 자식 창이 모달 대화 상자 모드 창으로 표시 될 수 없다는 컴파일 타임 오류가 발생합니다.

어떤 방법이 있습니까?

답변

0

나는 직접적인 방법이 있다고 생각하지 않습니다. 그러나 하위 레벨 모달 대화 상자에서는 상위 창을 사용하지 않도록 설정합니다. 이 모독을하지 않으면 모달이없는 MDI 아동을 보여주고 부모를 사용할 수 없도록 유지하십시오.

+0

감사합니다. 그게 내가 이미 msdn에서 읽은 것. 나는 뭔가를 놓쳤 으면 좋겠다. – Mariusz

0

나는 일반적으로 childform의 모든 컨트롤을 사용자 정의 컨트롤의 일부로 만든 다음 childform에 사용자 정의 컨트롤을 추가하고 사용자 정의 컨트롤을 포함하는 별도의 대화 상자를 만들면이 문제를 해결할 수 있습니다. 즉, 거의 모든 코드를 재사용 할 수 있으며 일반적으로 어쨌든 다른 코드도 있습니다 (일반적으로 childform에는 확인/취소 버튼 등이 없습니다). 당신이 그 경로를 아래로 가고 싶지 않는 경우

그러나, 여기에 가정으로 해결 방법을 가지고 CodeProject의 기사 (나는주의 깊게 바라 보았다 적이 없다)이있다 : MDI child as dialog form (MDI modal workaround)

+0

안녕하세요, 감사합니다. 이전에는 다른 창도 사용할 수 없었습니다. 물론 작동하지만 화면의 컨트롤을 회색으로 표시하는 불쾌한 효과를 제공합니다. – Mariusz

0

당신은 단순히을에 모달 창을 원하는 경우 부모 폼의 경계 내에서 열려면 양식 속성 StartPositionCenterParent으로 설정하십시오.

관련 문제