[VB] Afficher un Form

[Résolu/Fermé]
Signaler
-
 Anonyme -
Hello !

J'ai un petit soucis.
Je dispose de plusieurs Form (Form1, Form2, Form3, ...) déjà programmées et fonctionnant indépendamment les unes des autres.

Dans un autre Form (FormMain), je souhaite définir un menu qui fera appelle aux autres Form pour qu'ils s'affichent dans le FormMain dans un frame déjà définie.
Est-ce possible ? Et si oui voyez-vous une solution ?

Merci pour vos réponse.

3 réponses

Salut,

il n'est pas nécessaire de faire tout ce code. Il suffit de définir FormMain.IsMdiContainer à True et ajouter Form1, Form2 et Form3 comme enfants. (Form1.MdiParent = FormMain)

Voilà
8
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Bon je me réponds à moi même, car j'ai trouvé et ca pourrais interresser qq 1.

En fait normalement on ne peut pas inclure un Form dans un autre Form, car Form est un container principal. Mais pour contourner ce pb il suffit de mettre le toplevel de la form à inclure à False...

Par exemple :
Definir 3 Form : Form1, Form2 et Form3.

Ajouter un MenuStrip dans Form1 pour pouvoir afficher les Form2 ou Form3 dans Form1.
Et Ajouter les lignes suivantes dans Form1

Public Class Form1
    Dim f2 As Form2
    Dim f3 As Form3


    Private Sub Form2ToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form2ToolStripMenuItem.Click
        If Not IsNothing(f3) Then
            f3.Hide()
        End If
        If Not IsNothing(f2) Then
            f2.Show()
        Else
            f2 = New Form2()
            f2.TopLevel = False 'LA Ligne Importante !
            Panel1.Controls.Add(f2)
            f2.Dock = DockStyle.Fill
            f2.FormBorderStyle = Windows.Forms.FormBorderStyle.None
            f2.Show()
        End If
    End Sub

    Private Sub Form3ToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form3ToolStripMenuItem.Click
        If Not IsNothing(f2) Then
            f2.Hide()
        End If
        If Not IsNothing(f3) Then
            f3.Show()
        Else
            f3 = New Form3()
            f3.TopLevel = False 'LA Ligne Importante !
            Panel1.Controls.Add(f3)
            f3.Dock = DockStyle.Fill
            f3.FormBorderStyle = Windows.Forms.FormBorderStyle.None
            f3.Show()
        End If

    End Sub
End Class


Et voili !

Bon Week-End à tous !
salut, s'il vous plais ou je doit déclarer Panel1.
Merci d'avance