Fermer un Formulaire et Ouvrir un Autre en VB.NET
Dans une application Windows Forms en VB.NET, il est courant de naviguer entre différents formulaires. Voici un guide étape par étape pour fermer un formulaire et en ouvrir un autre.
Étape 1 : Créer deux formulaires
- Ajoutez deux formulaires à votre projet :
- Par défaut, vous avez
Form1
. Ajoutez un deuxième formulaire :- Cliquez droit sur votre projet dans l’Explorateur de solutions.
- Sélectionnez Ajouter > Windows Form.
- Nommez le formulaire
Form2
.
- Concevez vos formulaires :
- Ajoutez des boutons sur chaque formulaire pour la navigation :
- Sur
Form1
, ajoutez un bouton nommébtnOpenForm2
. - Sur
Form2
, ajoutez un bouton nommébtnOpenForm1
.
- Sur
Étape 2 : Ouvrir un autre formulaire sans fermer l’actuel
Si vous souhaitez simplement ouvrir un autre formulaire sans fermer l’actuel, utilisez la méthode Show()
.
Exemple sur Form1
(ouvrir Form2
) :
Private Sub btnOpenForm2_Click(sender As Object, e As EventArgs) Handles btnOpenForm2.Click
Dim form2 As New Form2()
form2.Show()
End Sub
Exemple sur Form2
(ouvrir Form1
) :
Private Sub btnOpenForm1_Click(sender As Object, e As EventArgs) Handles btnOpenForm1.Click
Dim form1 As New Form1()
form1.Show()
End Sub
Étape 3 : Fermer le formulaire actuel et ouvrir un autre
Si vous souhaitez fermer le formulaire actuel après en avoir ouvert un autre, utilisez la méthode Close()
.
Exemple sur Form1
(ouvrir Form2
et fermer Form1
) :
Private Sub btnOpenForm2_Click(sender As Object, e As EventArgs) Handles btnOpenForm2.Click
Dim form2 As New Form2()
form2.Show()
Me.Close() ' Ferme Form1
End Sub
Étape 4 : Fermer un formulaire sans quitter l’application
Si vous fermez tous les formulaires principaux, l’application se terminera par défaut. Pour éviter cela (si par exemple, vous utilisez un formulaire principal ou un écran de démarrage), configurez un formulaire principal dans le fichier Application Events.
- Cliquez droit sur votre projet > Propriétés.
- Sous l’onglet Application, définissez un formulaire principal dans la liste déroulante.
Étape 5 : Navigation avec un formulaire principal
Une autre méthode consiste à utiliser un formulaire principal comme base de l’application. Ce formulaire gère l’ouverture et la fermeture des autres formulaires.
Exemple avec un formulaire principal MainForm
Dans MainForm
:
Private Sub btnOpenForm1_Click(sender As Object, e As EventArgs) Handles btnOpenForm1.Click
Dim form1 As New Form1()
form1.Show()
Me.Hide() ' Masque le formulaire principal sans le fermer
End Sub
Private Sub btnOpenForm2_Click(sender As Object, e As EventArgs) Handles btnOpenForm2.Click
Dim form2 As New Form2()
form2.Show()
Me.Hide() ' Masque le formulaire principal sans le fermer
End Sub
Dans Form1
et Form2
:
Ajoutez un bouton pour revenir au formulaire principal :
Private Sub btnBackToMainForm_Click(sender As Object, e As EventArgs) Handles btnBackToMainForm.Click
Dim mainForm As New MainForm()
mainForm.Show()
Me.Close() ' Ferme le formulaire actuel
End Sub
Étape 6 : Navigation sans recréer le formulaire
Si vous ne souhaitez pas recréer un nouveau formulaire chaque fois que vous naviguez, utilisez des instances globales.
Exemple avec des variables globales
Déclarez une instance de chaque formulaire dans un module global :
Module GlobalForms
Public form1 As New Form1()
Public form2 As New Form2()
End Module
Dans Form1
:
Private Sub btnOpenForm2_Click(sender As Object, e As EventArgs) Handles btnOpenForm2.Click
form2.Show()
Me.Hide() ' Masque Form1
End Sub
Dans Form2
:
Private Sub btnOpenForm1_Click(sender As Object, e As EventArgs) Handles btnOpenForm1.Click
form1.Show()
Me.Hide() ' Masque Form2
End Sub
Étape 7 : Fermer complètement l’application
Pour fermer complètement l’application lorsque vous fermez un formulaire, utilisez :
Application.Exit()
Exemple :
Dans Form2
, fermer l’application depuis un bouton :
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Application.Exit()
End Sub
Étape 8 : Gestion des événements de fermeture
Vous pouvez gérer les événements de fermeture pour effectuer des actions avant qu’un formulaire ne se ferme.
Exemple avec l’événement FormClosing
Dans Form1
:
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Dim result As DialogResult = MessageBox.Show("Voulez-vous vraiment fermer ce formulaire ?", "Confirmer", MessageBoxButtons.YesNo)
If result = DialogResult.No Then
e.Cancel = True ' Annule la fermeture
End If
End Sub
Résumé des méthodes
Action | Code |
---|---|
Ouvrir un formulaire | form2.Show() |
Fermer le formulaire actuel | Me.Close() |
Masquer un formulaire | Me.Hide() |
Revenir à un formulaire principal | mainForm.Show() |
Fermer l’application | Application.Exit() |
Comment afficher une boîte de dialogue ?
En VB.NET, une boîte de dialogue peut être affichée à l’aide de différentes méthodes et types, en fonction de ce que vous souhaitez faire. Voici un guide détaillé avec des exemples courants de boîtes de dialogue :
1. Boîte de Message (MessageBox)
La méthode la plus simple et la plus courante pour afficher des informations, des avertissements ou des questions est d’utiliser un MessageBox.
Exemple : MessageBox.Show
MessageBox.Show("Ceci est un message d'information.", "Titre de la boîte", MessageBoxButtons.OK, MessageBoxIcon.Information)
Options disponibles
- Boutons disponibles :
MessageBoxButtons.OK
MessageBoxButtons.OKCancel
MessageBoxButtons.YesNo
MessageBoxButtons.YesNoCancel
MessageBoxButtons.RetryCancel
- Icônes disponibles :
MessageBoxIcon.Information
MessageBoxIcon.Warning
MessageBoxIcon.Error
MessageBoxIcon.Question
Exemple complet avec choix de l’utilisateur :
Dim result As DialogResult
result = MessageBox.Show("Voulez-vous continuer ?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = DialogResult.Yes Then
MessageBox.Show("Vous avez choisi Oui.", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Vous avez choisi Non.", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
2. Boîtes de Dialogue Standards
VB.NET fournit plusieurs boîtes de dialogue standard pour des tâches spécifiques, comme ouvrir des fichiers, enregistrer des fichiers ou choisir des couleurs.
2.1. Boîte de Dialogue Ouvrir un Fichier (OpenFileDialog)
Utilisée pour permettre à l’utilisateur de sélectionner un fichier.
Dim openFileDialog As New OpenFileDialog()
openFileDialog.Title = "Sélectionnez un fichier"
openFileDialog.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*"
If openFileDialog.ShowDialog() = DialogResult.OK Then
MessageBox.Show("Vous avez sélectionné : " & openFileDialog.FileName, "Fichier sélectionné", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
2.2. Boîte de Dialogue Enregistrer un Fichier (SaveFileDialog)
Utilisée pour permettre à l’utilisateur de spécifier un emplacement pour enregistrer un fichier.
Dim saveFileDialog As New SaveFileDialog()
saveFileDialog.Title = "Enregistrez votre fichier"
saveFileDialog.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*"
If saveFileDialog.ShowDialog() = DialogResult.OK Then
MessageBox.Show("Fichier enregistré sous : " & saveFileDialog.FileName, "Fichier enregistré", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
2.3. Boîte de Dialogue Sélecteur de Couleurs (ColorDialog)
Utilisée pour permettre à l’utilisateur de choisir une couleur.
Dim colorDialog As New ColorDialog()
If colorDialog.ShowDialog() = DialogResult.OK Then
MessageBox.Show("Vous avez choisi la couleur : " & colorDialog.Color.ToString(), "Couleur sélectionnée", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
2.4. Boîte de Dialogue Sélecteur de Police (FontDialog)
Utilisée pour permettre à l’utilisateur de choisir une police.
Dim fontDialog As New FontDialog()
If fontDialog.ShowDialog() = DialogResult.OK Then
MessageBox.Show("Vous avez choisi la police : " & fontDialog.Font.Name, "Police sélectionnée", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
2.5. Boîte de Dialogue Sélecteur de Dossier (FolderBrowserDialog)
Permet à l’utilisateur de sélectionner un dossier.
Dim folderDialog As New FolderBrowserDialog()
folderDialog.Description = "Sélectionnez un dossier"
If folderDialog.ShowDialog() = DialogResult.OK Then
MessageBox.Show("Dossier sélectionné : " & folderDialog.SelectedPath, "Dossier", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
3. Créer une Boîte de Dialogue Personnalisée
Si les boîtes de dialogue standards ne répondent pas à vos besoins, vous pouvez créer votre propre formulaire pour agir comme une boîte de dialogue.
Exemple : Boîte de Dialogue Personnalisée
- Créez un nouveau formulaire, par exemple
CustomDialog
. - Ajoutez des contrôles comme des boutons ou des champs d’entrée.
- Configurez le bouton principal pour définir le résultat de la boîte de dialogue.
Code dans CustomDialog
:
Public Class CustomDialog
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
Me.DialogResult = DialogResult.OK
Me.Close()
End Sub
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
Me.DialogResult = DialogResult.Cancel
Me.Close()
End Sub
End Class
Code pour afficher la boîte de dialogue personnalisée :
Dim dialog As New CustomDialog()
If dialog.ShowDialog() = DialogResult.OK Then
MessageBox.Show("Vous avez cliqué sur OK.", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Vous avez cliqué sur Annuler.", "Annulation", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
Résumé des boîtes de dialogue disponibles
Type | Classe | Usage |
---|---|---|
MessageBox | MessageBox.Show | Afficher un message ou poser une question. |
Ouvrir un fichier | OpenFileDialog | Sélectionner un fichier à ouvrir. |
Enregistrer un fichier | SaveFileDialog | Spécifier un emplacement pour enregistrer un fichier. |
Sélecteur de couleurs | ColorDialog | Choisir une couleur. |
Sélecteur de police | FontDialog | Choisir une police. |
Sélecteur de dossier | FolderBrowserDialog | Sélectionner un dossier. |
Boîte personnalisée | Formulaire personnalisé | Créer une boîte de dialogue sur mesure. |