2010-12-27 3 views
1

나는 스크린 샷을 게시 할 C# 응용 프로그램을 프로그래밍했습니다. 이 메인 폼에는 다른 폼을 여는 3 개의 버튼이 있습니다. 이제이 양식을 열어주는 스트립 메뉴가있는 하나의 기본 양식을 만들고자하는이 응용 프로그램을 수정하기로 결정했습니다. 이 코드를 사용했지만 마음에 들지 않거나 잘못된 것을하고 있습니다. 자식 컨트롤 (닫기, 최대화, 최소화) 부모에 있기 때문에 나는 (두 번째 사진 참조) 좋아하지 않는다 :C# winForms mainform 내부에서 양식 열기

alt text

나에게 뭔가를 조언을 주시기 바랍니다. MDI는 그런 직업에 좋은가요? 감사!

alt text

Sell sell = new Sell(); 
sell.MdiParent = this; 
sell.Dock = DockStyle.Fill; 
sell.Show();` 
그래서 내 문제는 내가 아이가이 만드는 방법을 creen되어 형성 열 때 부모 폼이 작성되지 않는 것입니다 그것은 부모 폼은 alt text

+0

나는 당신이 여기에서 묘사하려는 것을 정말로 이해하지 못한다. 당신은 * MDI를 좋아하지 않는다고 말했습니다. 왜냐하면 각 자식 폼이 최소화, 최대화 및 닫기 버튼을 갖기 때문입니다. 그것이 MDI 자식이거나 별도의 플로팅 윈도우이든 새로운 양식을 보여줄 때마다 작동하는 방법입니다. 달성하고자하는 최종 디자인에 대한 더 나은 설명으로 질문을 업데이트 할 수 있습니까? –

+0

내가 이해할 수있는 한, 페이지 컨트롤이 사용자의 요구에 더 적합 할 것이라고 생각했을 것입니다. –

+0

도와 주셔서 감사합니다. 판매 판매 = 신규 판매(); sell.MdiParent = this; –

답변

1

최근 편집을 보면 콘텐츠/레이아웃이 유연하지 않기 때문에 자녀의 양식의 콘텐츠가 최대화 되어도 화면을 채우지 않는 이유가 있다고 생각합니다.

디자인 모드에서 컨트롤을 배치 한 위치는 런타임에 어디에서 크거나 작게 창을 만들지에 관계없이 끝나게됩니다. 창을 모두 포함 할 수 없을 정도로 창 크기가 작 으면 숨겨 지거나 스크롤 막대가 표시됩니다. 또는 창을 필요한 것보다 크게 만들면 많은 빈 공간이 표시됩니다.

이 방법은 컨트롤의 DockAnchor 속성을 설정하여 포함 된 폼의 레이아웃에 맞게 확장 및 압축합니다. 컨트롤을 TableLayoutPanel 또는 FlowLayoutPanel 컨트롤 안에 배치하여 레이아웃을 관리 할 수도 있습니다.

MDI 응용 프로그램이 보이는 방식에 반대하는지 또는 올바르게 구현하는 방법을 이해하지 못했다면 원래 질문하는 것처럼 보입니다. . 귀하가 제안한 명확한 설명은 사실 보다 덜입니다. 코드 스 니펫을 올렸지 만 의미가 무엇인지 설명하지 않았습니다. 내가 코멘트에 썼 듯이, 최소화, 최대화 및 닫기 버튼이없는 양식을 표시하는 (비 hackish가 아닌) 방법이 있습니다 (FormBorderStyle 속성을 "None"으로 설정하면됩니다. 그러나 이것은 바보 같아요. 단순히 양식에 대해 잘못된 제어 기능을 사용할 수있는 솔루션입니다. 양식처럼 작동하지 않으므로 사용자는 양식과 같이 이동할 수 없습니다. 왜 을 사용 하시겠습니까? 양식을 사용 하시겠습니까?).

중앙에서 내용이 변경되는 단일 응용 프로그램 창을 사용하려면 일련의 UserControls을 만들어야합니다. 위에서 설명한 유체 레이아웃 기법을 사용하여 양식과 마찬가지로 필요한 자식 컨트롤을 사용하여 각 사용자 정의 컨트롤을 배치하고 각 사용자 정의 컨트롤을 기본 폼에 추가하고 각 컨트롤의 Dock 속성을 "채우기"로 설정합니다 (전체보기 영역을 채울 수 있도록) 코드를 작성하여 현재 볼 수있는 사용자 정의 컨트롤을 주 폼의보기 영역으로 간단히 바꿀 수 있습니다.UserControlPanel과 같은 코드를 사용하는 이점은 Form처럼 코드를 하나의 컨트롤로 통합한다는 것입니다. 탭 컨트롤을 사용할 수는 있지만 여러 폼 (목표로 보이는 것)이 있다는 표시를 표시하지 않으려는 경우에도 작업에 대한 잘못된 컨트롤이됩니다.

질문 제목에서 알 수 있듯이 문자 그대로 주 양식에서 하위 양식을 열려면 실제로 MDI를 사용해야합니다. 을 이해하지 못하는 경우을 수행하는 방법에 대해 더 자세히 질문 할 필요가 있습니다.

0

자식 폼 가득

설정되었다
FormBorderStyle = None 

자녀 용

1

부모 폼에 대해 MDI 컨테이너 속성을 true로 설정하십시오. 도움이 될거야.

+0

* 어떻게 * 도움이 될까요? 이것은 특히 유용한 대답은 아닙니다. –

관련 문제