[C# 강좌 35장] WIndow Form - 2 SDI, MDI

공부/C#  2012.10.14 09:00



안녕하세요. 개발자 명월입니다.

저번 포스팅에서는 Window.Form 을 어떻게 띄우냐를 확인하였습니다. 이번 포스팅에서는 Window.Form의 폼 종류에 대해서 살펴보겠습니다.

 

윈도우 시스템에서는 SDI와 MDI 폼 두종류가 있습니다.

최근에는 MDI 스타일의 폼 종류는 거의 보이지 않으나 예전에는  MDI 폼 스타일 프로그램이 참 많았습니다.예를 들면 포토샵이 그러했고 윈도우 보조프로그램들이 그런식의 폼을 많이 사용하였습니다. 그러다면 MDI 는 무엇이냐 하면 영어로는 Multiple Document Interface으로 폼 안에 다중 폼을 두는 것입니다.

 

예제 소스입니다.

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.Windows.Forms;
  5
  6 namespace Blog20121013
  7 {
  8     class Program : Form
  9     {
10         static void Main(string[] args)
11         {
12             Program p = new Program();
13             p.Show();
14             Application.Run();
15         }
16         public Program() {
17             this.IsMdiContainer = true;
18             this.Load += new EventHandler(Program_Load);
19         }
20
21         void Program_Load(object sender, EventArgs e)
22         {
23             Form[] childForm = new Form[10];
24             for (int i = 0; i < 10; i++) {
25                 childForm[i] = new Form();
26                 childForm[i].MdiParent = this;
27                 childForm[i].Show();
28             }
29         }
30     }
31 }
32

 

 

 

창 안에 윈도우창이 생성됩니다.

SDI 는 우리가 사용하는 Single Document Interface 로서 독립적인 폼을 실행시켜서 사용하는 방식을 뜻합니다.

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.Windows.Forms;
  5
  6 namespace Blog20121013
  7 {
  8     class Program : Form
  9     {
10         static void Main(string[] args)
11         {
12             Program p = new Program();
13             p.Show();
14             Application.Run();
15         }
16         public Program() {
17             //this.IsMdiContainer = true;
18             this.Load += new EventHandler(Program_Load);
19         }
20         void Program_Load(object sender, EventArgs e)
21         {
22             Form[] childForm = new Form[10];
23             for (int i = 0; i < 10; i++) {
24                 childForm[i] = new Form();
25                 //childForm[i].MdiParent = this;
26                 childForm[i].Show();
27             }
28         }
29     }
30 }
31

 

 

 

SDI는 앞으로 쭉 자세히 알아볼 예정이지만 MDI는 요번 포스팅에 마무리를 하니 조금 더 알아보도록 하겠습니다.

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.Drawing;
  5 using System.Windows.Forms;
  6
  7 namespace Blog20121013
  8 {
  9     class Program : Form
10     {
11         static void Main(string[] args)
12         {
13             Program p = new Program();
14             p.Show();
15             Application.Run();
16         }
17         Button[] _button;
18         String[] _buttonText = { "수평", "수직", "계단식", "아이콘" };
19         public Program() {
20             this.IsMdiContainer = true;
21             this.Load += new EventHandler(Program_Load);
22             this.FormClosed += new FormClosedEventHandler(Program_FormClosed);
23
24             _button = new Button[4];
25             for (int i = 0; i < 4; i++) {
26                 _button[i] = new Button();
27                 _button[i].Location = new Point(10+(i*40), 10);
28                 _button[i].Size = new Size(40, 40);
29                 _button[i].Text = _buttonText[i];
30                 this.Controls.Add(_button[i]);
31                 _button[i].Click += new EventHandler(Button_Click);
32             }
33         }
34
35         void Button_Click(object sender, EventArgs e)
36         {
37             if ((Button)sender == _button[0]) {
38                 this.LayoutMdi(MdiLayout.TileHorizontal);
39             }
40             else if ((Button)sender == _button[1])
41             {
42                 this.LayoutMdi(MdiLayout.TileVertical);
43             }
44             else if ((Button)sender == _button[2])
45             {
46                 this.LayoutMdi(MdiLayout.Cascade);
47             }
48             else if ((Button)sender == _button[3])
49             {
50                 this.LayoutMdi(MdiLayout.ArrangeIcons);
51             }
52         }
53
54
55         void Program_FormClosed(object sender, FormClosedEventArgs e)
56         {
57             Application.Exit();
58         }
59         void Program_Load(object sender, EventArgs e)
60         {
61             Form[] childForm = new Form[10];
62             for (int i = 0; i < 10; i++) {
63                 childForm[i] = new Form();
64                 childForm[i].MdiParent = this;
65                 childForm[i].Show();
66             }
67         }
68     }
69 }
70

 

 

 

위 예제는 이벤트를 많이 사용하여 이해하기 힘들 것이라 생각됩니다. 그러나 MDI는 그리 중요도가 높지도 않으니 그냥 아 이렇게 사용하는 방법이 있구나 하고 알아두고 넘어가는 편이 좋다고 생각됩니다.

 


댓글 0개가 달렸습니다.
댓글쓰기