Share via


MDIForm オブジェクト (Visual Basic 6.0 ユーザー向け)

更新 : 2007 年 11 月

Visual Basic 6.0 では、MDIForm は MDI (マルチ ドキュメント インターフェイス) アプリケーション用のコンテナとして機能する特別な種類のフォームでした。Visual Basic 2008 では、IsMdiContainer プロパティが true に設定されたフォームは、MDI コンテナとして動作できます。

概念の違い

子フォームと複数の MDI フォーム

Visual Basic 6.0 では、子フォームに MDIChild プロパティを設定することにより、そのフォームが MDI フォームの子であることを示します。MDI アプリケーションは MDI フォームを 1 つしか持つことができません。

Visual Basic 2008 では、MdiParent プロパティが MDIChild プロパティの代わりに使用され、子フォームを含む MDI フォームを識別します。MDI アプリケーションは複数の MDI コンテナを持つことができます。

BackColor プロパティおよび Picture プロパティ

Visual Basic 6.0 では、MDIForm の背景色は、BackColor プロパティを設定することで変更できます。背景画像は Picture プロパティを設定することで表示できます。

Visual Basic 2008 では、MDI フォームの背景色を変更したり、MDI フォームに画像を表示したりすることはできません。フォームの BackColor プロパティや BackgroundImage プロパティを設定することはできますが、IsMdiContainer プロパティを true に設定すると、これらの設定は無効になります。

AutoShowChildren プロパティ

Visual Basic 6.0 では、MDI フォームの AutoShowChildren プロパティを使用して、フォームの読み込み時に 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 子フォームの 5 つのインスタンスを表示する方法を示しています。

' 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 オブジェクトに固有のプロパティとメソッドだけを表に示しています。他のプロパティ、メソッド、およびイベントについては、「Form オブジェクト (Visual Basic 6.0 ユーザー向け)」を参照してください。

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 プロパティは使用されなくなりました。Visual Basic 6.0 での動作をエミュレートするために、元のアプリケーションで AutoShowChildren が true に設定されていた場合には、アップグレード時に、子フォームを表示させるためのコードが 1 行追加されます。

参照

概念

MDI (Visual Basic 6.0 ユーザー向け)

Form オブジェクト (Visual Basic 6.0 ユーザー向け)

フォームのタスク (Visual Basic 6.0 ユーザー向け)

その他の技術情報

マルチ ドキュメント インターフェイス (MDI) アプリケーション