Objet MDIForm pour les utilisateurs de Visual Basic 6.0
Mise à jour : novembre 2007
Dans Visual Basic 6.0, un MDIForm était un formulaire d'un type particulier qui servait de conteneur à une application MDI (Multiple Document Interface). Dans Visual Basic 2008, tout formulaire dont la propriété IsMdiContainer a la valeur true peut agir en tant que conteneur MDI.
Différences conceptuelles
Formulaires enfants et formulaires MDI multiples
Dans Visual Basic 6.0, le fait de définir la propriété MDIChild d'un formulaire enfant identifie celui-ci comme un enfant du formulaire MDI ; une application MDI ne peut posséder qu'un seul formulaire MDI.
Dans Visual Basic 2008, la propriété MdiParent remplace la propriété MDIChild et identifie le formulaire MDI qui contiendra le formulaire enfant ; les applications MDI peuvent avoir plusieurs conteneurs MDI.
Propriétés BackColor et Picture
Dans Visual Basic 6.0, la couleur d'arrière-plan d'un MDIForm peut être modifiée en définissant la propriété BackColor et une image d'arrière-plan peut être affichée en définissant la propriété Picture.
Dans Visual Basic 2008, il n'est pas possible de modifier la couleur d'arrière-plan ou d'afficher une image sur un formulaire MDI. Même si vous pouvez définir les propriétés BackColor et BackgroundImage sur le formulaire, l'affectation de la valeur true à la propriété IsMdiContainer invalide ces paramètres.
Propriété AutoShowChildren
Dans Visual Basic 6.0, la propriété AutoShowChildren d'un formulaire MDI permet d'afficher automatiquement un formulaire MDI enfant dès qu'il est chargé. Les formulaires standard ne présentent pas ce comportement ; l'appel à la méthode Load permet de charger, mais n'affiche pas le formulaire.
Dans Visual Basic 2008, vous devez appeler explicitement la méthode Show pour afficher un formulaire enfant MDI.
Contrôles et graphiques sur les formulaires MDI
Dans Visual Basic 6.0, il n'est pas possible d'ajouter la plupart des contrôles à un MDIForm. Vous pouvez seulement ajouter des contrôles ancrés tels que le contrôle Menu, StatusBar ou ToolBar. De plus, les méthodes graphiques telles que Circle ou Line ne peuvent pas être utilisées sur un MDIForm.
Dans Visual Basic 2008, vous pouvez ajouter un contrôle à un formulaire MDI ; cependant, le comportement risque de ne pas être celui que vous attendez. Un contrôle sur un formulaire dont la propriété IsMdiContainer a la valeur true navigue sur tout formulaire enfant MDI. Même si vous pouvez appeler des méthodes graphiques dans l'événement Paint, les graphiques n'apparaissent pas au moment de l'exécution.
Modifications du code pour les formulaires MDI
Les exemples ci-dessous illustrent les différences entre les techniques de codage dans Visual Basic 6.0 et dans Visual Basic 2008.
Modifications du code pour afficher des formulaires enfants MDI
Le code suivant illustre comment afficher cinq instances d'un formulaire enfant 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
Modifications du code pour réorganiser des fenêtres enfants MDI
Le code suivant illustre comment écrire du code pour modifier la disposition des fenêtres dans une application MDI. Il suppose que vous avez créé des éléments de menu pour chaque option.
' 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
Équivalences des propriétés et des méthodes du formulaire MDI
Le tableau suivant répertorie les propriétés et méthodes de Visual Basic 6.0, ainsi que leurs équivalents dans Visual Basic 2008. Seules les propriétés et méthodes qui sont uniques à l'objet MDIForm sont répertoriées ; pour d'autres propriétés, méthodes et événements, consultez Objet Form pour les utilisateurs de Visual Basic 6.0.
Propriétés et méthodes de l'objet MDIForm
Visual Basic 6.0 |
Équivalent Visual Basic 2008 |
---|---|
Propriété ActiveForm |
|
Méthode Arrange |
|
Propriété AutoShowChildren |
Nouvelle implémentation. Pour plus d'informations, consultez Modification du comportement d'affichage dans un formulaire MDI. |
Propriété BackColor |
Nouvelle implémentation. L'arrière-plan d'un formulaire MDI est toujours celui qui est défini par défaut (Control). |
Propriété Picture |
Nouvelle implémentation. Les formulaires MDI dans Visual Basic 2008 ne peuvent pas afficher directement des images. |
Mettre à niveau des remarques
Lors de la mise à niveau d'une application MDI de Visual Basic 6.0 vers Visual Basic 2008, tous les objets MDIForm sont mis à niveau vers des formulaires normaux et leur propriété IsMdiContainer a la valeur true.
Dans Visual Basic 2008, la propriété AutoShowChildren n'existe plus. Pour émuler le comportement de Visual Basic 6.0, une ligne de code est ajoutée lors de la mise à niveau afin que chaque formulaire enfant soit affiché si AutoShowChildren a la valeur true dans l'application d'origine.
Voir aussi
Concepts
MDI pour les utilisateurs de Visual Basic 6.0
Objet Form pour les utilisateurs de Visual Basic 6.0
Tâches des formulaires pour les utilisateurs de Visual Basic 6.0
Autres ressources
Applications d'interface multidocument (MDI, Multiple Document Interface)