다음을 통해 공유


Visual Basic 6.0 사용자를 위한 MDIForm 개체

업데이트: 2007년 11월

Visual Basic 6.0에서 MDIForm은 MDI(다중 문서 인터페이스) 응용 프로그램의 컨테이너로 사용되는 특별한 형식의 폼입니다. Visual Basic 2008에서는 해당 IsMdiContainer 속성이 true로 설정된 폼은 모두 MDI 컨테이너로 사용될 수 있습니다.

개념적 차이

자식 폼 및 여러 MDI 폼

Visual Basic 6.0에서는 자식 폼에 MDIChild 속성을 설정하면 이 자식 폼이 MDI 폼의 자식으로 식별됩니다. MDI 응용 프로그램에는 MDI 폼이 하나밖에 없습니다.

Visual Basic 2008에서는 MdiParent 속성이 MDIChild 속성을 대체하고 자식 폼을 포함할 MDI 폼을 식별합니다. MDI 응용 프로그램에는 여러 개의 MDI 컨테이너가 있을 수 있습니다.

BackColor 및 Picture 속성

Visual Basic 6.0에서는 BackColor 속성을 설정하여 MDIForm의 배경색을 변경할 수 있고 Picture 속성을 설정하여 배경 그림을 표시할 수 있습니다.

Visual Basic 2008에서는 MDI 폼에 그림을 표시하거나 배경색을 변경할 수 없습니다. 폼에 BackColorBackgroundImage 속성을 설정할 수는 있지만 IsMdiContainer 속성을 true로 설정하면 이러한 설정이 무효화됩니다.

AutoShowChildren 속성

Visual Basic 6.0에서는 MDI 폼의 AutoShowChildren 속성을 사용하여 MDI 폼이 로드될 때 MDI 자식 폼을 자동으로 표시합니다. 표준 폼에는 이러한 동작이 없으며 Load 메서드를 호출하면 해당 폼이 로드되지만 표시되지는 않습니다.

Visual Basic 2008에서 MDI 자식 폼을 표시하려면 Show 메서드를 명시적으로 호출해야 합니다.

MDI 폼의 컨트롤 및 그래픽

Visual Basic 6.0에서는 대부분의 컨트롤을 MDIForm에 추가할 수 없습니다. Menu, StatusBar 또는 ToolBar 컨트롤과 같은 도킹된 컨트롤만 추가할 수 있습니다. 또한 Circle 또는 Line 같은 그래픽 메서드는 MDIForm에서 사용할 수 없습니다.

Visual Basic 2008에서는 모든 컨트롤을 MDI 폼에 추가할 수 있지만 동작은 예상과 다를 수 있습니다. IsMdiContainer 속성이 true로 설정된 폼의 컨트롤은 MDI 자식 폼의 맨 위에 "표시"됩니다. Paint 이벤트에서 그래픽 메서드를 호출할 수 있지만 그래픽이 런타임에 나타나지는 않습니다.

MDI 폼의 코드 변경

다음 예제에서는 Visual Basic 6.0과 Visual Basic 2008 간 코딩 기술의 차이점을 보여 줍니다.

MDI 자식 폼 표시의 코드 변경

다음 코드에서는 MDI 자식 폼의 다섯 가지 인스턴스를 표시하는 방법을 보여 줍니다.

' Visual Basic 6.0
Dim F(1 To 4) As New Form1
Private Sub MDIForm_Load()
   Dim i As Integer
   Load Form1
   For i = 1 To 4
      F(i).Caption = "Form" & i + 1
      F(i).Show
   Next I
End Sub
' Visual Basic
Private Sub MDIForm1_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.Load
  Dim i As Integer = 0
  For i = 0 To 4
      Dim F As New FormChild
      F.Text = "Form " & CStr(i + 1)
      F.Show()
  Next
End Sub

MDI 자식 창 정렬의 코드 변경

다음 코드에서는 MDI 응용 프로그램에서 창 배열을 변경하는 코드를 작성하는 방법을 보여 줍니다. 이 예제에서는 각 옵션에 대한 메뉴 항목을 만들었다고 가정합니다.

' Visual Basic 6.0
Private Sub menuCascade_Click()
   Me.Arrange vbCascade
End Sub
Private Sub menuTileHorizontally_Click()
   Me.Arrange vbHorizontal
End Sub
Private Sub menuTileVertically_Click()
   Me.Arrange vbVertical
End Sub
' Visual Basic
Private Sub CascadeToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles CascadeToolStripMenuItem.Click

  Me.LayoutMdi(MdiLayout.Cascade)
End Sub
' Visual Basic
Private Sub TileVerticleToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles TileVerticalToolStripMenuItem.Click

  Me.LayoutMdi(MdiLayout.TileVertical)
End Sub
' Visual Basic
Private Sub TileHorizontalToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles TileHorizontalToolStripMenuItem.Click

  Me.LayoutMdi(MdiLayout.TileHorizontal)
End Sub

MDI 폼 속성, 메서드에 해당하는 요소

다음 표에서는 Visual Basic 6.0의 속성과 메서드 및 이에 해당하는 Visual Basic 2008 요소를 보여 줍니다. 여기에는 MDIForm 개체에 고유한 속성과 메서드만 나열되어 있으므로 다른 속성, 메서드 및 이벤트는 Visual Basic 6.0 사용자를 위한 Form 개체를 참조하십시오.

MDIForm 속성 및 메서드

Visual Basic 6.0

동일한 기능의 Visual Basic 2008 요소

ActiveForm 속성

ActiveMdiChild

Arrange 메서드

LayoutMdi

AutoShowChildren 속성

새롭게 구현되었습니다. 자세한 내용은 MDI 폼의 Show 동작이 변경되었습니다.를 참조하십시오.

BackColor 속성

새롭게 구현되었습니다. MDI 폼에 대한 배경은 항상 기본값인 Control이 됩니다.

Picture 속성

새롭게 구현되었습니다. Visual Basic 2008의 MDI 폼에서는 직접 그림을 표시할 수 없습니다.

업그레이드 참고 사항

MDI 응용 프로그램을 Visual Basic 6.0에서 Visual Basic 2008로 업그레이드하면 모든 MDIForm 개체가 일반 폼으로 업그레이드되고 해당 IsMdiContainer 속성은 true로 설정됩니다.

Visual Basic 2008에서는 AutoShowChildren 속성이 더 이상 존재하지 않습니다. 기존 응용 프로그램에서 AutoShowChildren이 true로 설정되었으면 업그레이드할 때 각 자식 폼을 표시하는 코드 줄이 추가되어 Visual Basic 6.0 동작을 에뮬레이트할 수 있습니다.

참고 항목

개념

Visual Basic 6.0 사용자를 위한 MDI

Visual Basic 6.0 사용자를 위한 Form 개체

Visual Basic 6.0 사용자를 위한 폼 작업

기타 리소스

MDI 응용 프로그램