문제

나는 mdicontainer이고 상단에 메뉴 스트립이있는 양식을 가지고 있습니다. 나는 MDI 용기에 자식 양식을 추가하고 아이를 최대화하면 멘스 립을 극대화합니다. 멘스 립 아래에서 최대화하기 위해 아이를 제한하는 방법을 알고 싶습니다. 모든 도움이 감사하겠습니다.

도움이 되었습니까?

해결책

자녀 양식은 MDI에서 어린이 형태가 극대화되는 방식으로 최대화되고 있습니다. 실제로 부모 양식의 메뉴 스트립을 다루는 것은 아닙니다. 실제로 자체 메뉴 스트립을 부모 양식의 메뉴 스트립과 병합합니다.

자녀 양식이 MDI 부모의 사용 가능한 아동 영역 만 차지하려면 (부모의 메뉴와 메뉴를 통합하지 않음),이 코드와 같은 것을 Child Form의 Resize 이벤트에 넣으십시오.

if (this.WindowState == FormWindowState.Maximized)
{
    this.WindowState = FormWindowState.Normal;
    this.Size = this.MdiParent.ClientSize;
    this.Location = new Point(0, 0);
}

이는 어린이 창이 실제로 극대화되는 것을 막을 수 있습니다.

이 스 니펫이 정확히 제대로 작동하지 않기 때문에 "이 코드와 같은 것"이라고 말합니다. 그만큼 ClientSize 부모 양식의 속성은 양식의 전체 크기를 제공하는 반면 MDI 클라이언트 영역의 크기를 사용하려고합니다. 나는 그것을 얻는 방법을 모르고, 분명히 그것은 매우 쉬운 것이 아닙니다. 이 질문 참조 :

Winforms MDI 클라이언트 영역의 크기/위치

다른 팁

전체 컨테이너를 채우지 않도록 최대 규모의 속성을 설정할 수 있습니다.

나는 이것을 오래된 질문이라는 것을 알고 있지만, 나는 내가하고있는 오래된 프로젝트에서 이것을 달렸다. 도크를 dockstyle.fill로 설정하면 원하는 동작이 제공됩니다.

도크 스타일이있는 동안 창을 재배치하거나 크기를 조정하려고하면 창문이 행동하거나 이상하게 보일 것입니다.

이를 달성하기 위해 MDI Client Window의 Resize 이벤트에 가입했으며 창이 최대화 된 경우 도크 스타일을 채우도록 설정하고 Formborderstlye를 고정 디 알로그 (크기 조정을 방지하기 위해)로 설정하고 창 상태를 정상으로 설정하여 발생에서 최대화.

이 "최대화 된 상태"에있는 동안 사용자가 창을 움직이지 못하게하려면 WNDPROC 메소드를 무시하고 창이 움직일 때 처리 할 때 (SC_MOVE) 작업이 적용되는 것을 방지하기 위해 반환을 배치했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top