안녕하세요. 개발자 명월입니다.
저번 포스팅에서는 Window.Form 을 어떻게 띄우냐를 확인하였습니다. 이번 포스팅에서는 Window.Form의 폼 종류에 대해서 살펴보겠습니다.
윈도우 시스템에서는 SDI와 MDI 폼 두종류가 있습니다.
최근에는 MDI 스타일의 폼 종류는 거의 보이지 않으나 예전에는 MDI 폼 스타일 프로그램이 참 많았습니다.예를 들면 포토샵이 그러했고 윈도우 보조프로그램들이 그런식의 폼을 많이 사용하였습니다. 그러다면 MDI 는 무엇이냐 하면 영어로는 Multiple Document Interface으로 폼 안에 다중 폼을 두는 것입니다.
예제 소스입니다.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace Blog20121013
{
class Program : Form
{
static void Main(string[] args)
{
Program p = new Program();
p.Show();
Application.Run();
}
public Program()
{
this.IsMdiContainer = true;
this.Load += new EventHandler(Program_Load);
}
void Program_Load(object sender, EventArgs e)
{
Form[] childForm = new Form[10];
for (int i = 0; i < 10; i++)
{
childForm[i] = new Form();
childForm[i].MdiParent = this;
childForm[i].Show();
}
}
}
}
창 안에 윈도우창이 생성됩니다.
SDI 는 우리가 사용하는 Single Document Interface 로서 독립적인 폼을 실행시켜서 사용하는 방식을 뜻합니다.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace Blog20121013
{
class Program : Form
{
static void Main(string[] args)
{
Program p = new Program();
p.Show();
Application.Run();
}
public Program()
{
//this.IsMdiContainer = true;
this.Load += new EventHandler(Program_Load);
}
void Program_Load(object sender, EventArgs e)
{
Form[] childForm = new Form[10];
for (int i = 0; i < 10; i++)
{
childForm[i] = new Form();
//childForm[i].MdiParent = this;
childForm[i].Show();
}
}
}
}
SDI는 앞으로 쭉 자세히 알아볼 예정이지만 MDI는 요번 포스팅에 마무리를 하니 조금 더 알아보도록 하겠습니다.
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace Blog20121013
{
class Program : Form
{
static void Main(string[] args)
{
Program p = new Program();
p.Show();
Application.Run();
}
private Button[] _button;
private String[] _buttonText = { "수평", "수직", "계단식", "아이콘" };
public Program()
{
this.IsMdiContainer = true;
this.Load += new EventHandler(Program_Load);
this.FormClosed += new FormClosedEventHandler(Program_FormClosed);
_button = new Button[4];
for (int i = 0; i < 4; i++)
{
_button[i] = new Button();
_button[i].Location = new Point(10+(i*40), 10);
_button[i].Size = new Size(40, 40);
_button[i].Text = _buttonText[i];
this.Controls.Add(_button[i]);
_button[i].Click += new EventHandler(Button_Click);
}
}
void Button_Click(object sender, EventArgs e)
{
if ((Button)sender == _button[0])
{
this.LayoutMdi(MdiLayout.TileHorizontal);
}
else if ((Button)sender == _button[1])
{
this.LayoutMdi(MdiLayout.TileVertical);
}
else if ((Button)sender == _button[2])
{
this.LayoutMdi(MdiLayout.Cascade);
}
else if ((Button)sender == _button[3])
{
this.LayoutMdi(MdiLayout.ArrangeIcons);
}
}
void Program_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
void Program_Load(object sender, EventArgs e)
{
Form[] childForm = new Form[10];
for (int i = 0; i < 10; i++)
{
childForm[i] = new Form();
childForm[i].MdiParent = this;
childForm[i].Show();
}
}
}
}
위 예제는 이벤트를 많이 사용하여 이해하기 힘들 것이라 생각됩니다. 그러나 MDI는 그리 중요도가 높지도 않으니 그냥 아 이렇게 사용하는 방법이 있구나 하고 알아두고 넘어가는 편이 좋다고 생각됩니다.
'Study > C#' 카테고리의 다른 글
[C# 강좌 - 67] MVC Framework 프로젝트 생성하기 (0) | 2019.07.01 |
---|---|
[C# 강좌 - 55] 키워드 async, await (0) | 2019.05.20 |
[C# 강좌 - 43] WIndow Form - 5 Graphic (0) | 2012.10.17 |
[C# 강좌 - 42] WIndow Form - 4 구조체 , 모달과 모달리스 (0) | 2012.10.16 |
[C# 강좌 - 38] ADO 데이터 베이스 - 3 (0) | 2012.10.12 |
[C# 강좌 - 35] 소켓 통신 - 4 (6) | 2012.10.09 |
[C# 강좌 - 34] 소켓 통신 - 3 (2) | 2012.10.08 |
[C# 강좌 - 33] 소켓 통신 - 2 (1) | 2012.10.07 |