* MDI란?
* 참고 사이트
Menu Strip이나 Tab control 등 다양한 방식으로 MDI 구현이 가능하며 전 Menu Strip로 만들어보겠습니다.
* 참고 화면
- 위처럼 Menu strip으로 간단한 메뉴를 구성하고 MDI Form이라는 부모 폼 안에 MDI Child Form이라는 자식 폼이 실행됩니다.
- 자식 폼을 보여줄 때 최대화, 최소화, 기본 크기 등 화면 크기 지정이 가능합니다.
* 처음 프로젝트 생성 시 만들어지는 폼 그대로 사용하였으며 도구 상자에서 Menu Strip을 가져다 놓고 원하는 메뉴를 작성합니다.
* 부모 폼으로 사용할 폼을 선택하고 속성 창에서 'IsMdiContainer'의 값을 'True'로 변경합니다. 이렇게 하면 선택한 폼에서 자식 폼을 불러와 사용 가능합니다.
* 자식 폼을 부모 폼 안에서 표현하기 위해 매번 사용되는 코드를 메서드로 작성했습니다. 나중에 Menu Strip에서 작성한 메뉴 중 Click 이벤트에서 매번 사용하게 됩니다.
* 예제
private Form ShowActiveForm(Form form, Type type)
{
if (form == null)
{
form = (Form)Activator.CreateInstance(type);
form.MdiParent = this;
form.WindowState = FormWindowState.Maximized;
form.Show();
}
else
{
if (form.IsDisposed)
{
form = (Form)Activator.CreateInstance(type);
form.MdiParent = this;
form.WindowState = FormWindowState.Maximized;
form.Show();
}
else
{
form.Activate();
}
}
return form;
}
* 이제 Menu Strip에서 작성한 메뉴를 선택하고 Click 이벤트를 만들어줍니다.
* 예제
private void Child1_Click(object sender, EventArgs e)
{
//자식 폼 name : ChildForm1
ChildForm1 chifrm1 = null;
//자식 폼이 열려있으면
if(this.ActiveMdiChild != null)
{
//열려있는 자식 폼이 해당 폼이 아니면 닫는다
if (this.ActiveMdiChild != chifrm1)
{
this.ActiveMdiChild.Close();
}
chifrm1= ShowActiveForm(chifrm1, typeof(ChildForm1)) as ChildForm1;
}
else
{
chifrm1= ShowActiveForm(chifrm1, typeof(ChildForm1)) as ChildForm1;
}
}
- 현재 선택된 자식 폼이 아니면 다른 하위 폼들은 전부 닫히도록 하였습니다.
위처럼 간단하게 구현 가능합니다.
이상입니다.
'컴퓨터 > c#' 카테고리의 다른 글
c# 프로그램 난독화 (ConfuserEx, Obfuscar) (0) | 2021.08.10 |
---|---|
c# ComboBox 데이터(Item) 추가하기 (Display Member, Value Member) (0) | 2021.07.23 |
C#으로 PDF 제어하기 3 (PDF에서 내용 찾기) (0) | 2021.05.21 |
C#으로 PDF 제어하기 2 (PDF Merge, PDF 병합, PDF 합치기) (0) | 2021.05.21 |
C# 한자, 일본어 확인 및 변환 등 (비정규식) (0) | 2021.05.20 |