Site:  Cours VB.net  
3.8 Les fenêtres toutes faites.

Il existe :

    Les MessageBox et MsgBox.

    Les InputBox

    et les autres

...

   

Ces fenêtres toutes faites  facilitent le travail :

MessageBox du Framework 2 (VB 2005):

Ouvre une fenêtre qui présente  un message.

C’est une fonction qui affiche un message dans une boîte de dialogue, attend que l'utilisateur clique sur un bouton (Ok ou Oui-Non..), puis retourne si on le désire, une information qui indique le bouton cliqué par l'utilisateur.

On utilise la méthode Show pour afficher la boite.

On doit fournir le texte à afficher, on peut aussi fournir le titre dans la barre, le type de bouton , le type d'icône et le bouton par défaut, une option , la présence d'un bouton d'aide.

Syntaxe:

MessageBox.show(TexteAAfficher) ' Affiche une box avec le message et un bouton 'Ok', pas de valeur de retour.

 
Reponse= MessageBox.show(TexteAAfficher,Titre, TypeBouton , Icone, BoutonParDéfaut, Option, Bouton d'aide)
 
Le bouton cliqué par l'utilisateur est retourné dans Reponse (de type DialogResult).
 
Exemple:
 

Paramètres

TexteAAfficher

Obligatoire. Expression String affichée comme message de la boîte de dialogue (longueur maximale 1 024 caractères). N'oubliez pas d'insérer un retour chariot si le texte est long, cela crée 2 lignes.

Titre

 Expression String affichée dans la barre de titre de la boîte de dialogue. Si l'argument Titre est omis, le nom de l'application est placé dans la barre de titre.

 

TypeBouton  

Expression numérique qui représente la somme des valeurs spécifiant

-le nombre et le type de boutons à afficher :

MessageBoxButtons.OKOnly          Un seul bouton ‘Ok’

MessageBoxButtons.YesNo           Deux boutons ‘Oui’ ‘Non’

MessageBoxButtons.OkCancel        ‘Ok’ et ‘Annuler’

MessageBoxButtons.AbortRetryIgnore        ‘Annule’ ‘Recommence’ ‘Ignore'

 

 Icons

-le style d'icône à utiliser 

MessageBoxIcon.Error

MessageBoxIcon.Exclamation

...

L'identité du bouton par défaut

          MessageBoxDefaultButton.Button1

          MessageBoxDefaultButton.Button2

Les options

          MessageBoxOptions.RightAlign

 

L'affiche d'un bouton d'aide

          True pour l'afficher.

 

Comme d'habitude, il suffit de taper MessageBox.Show( pour que VB proposer les paramètres.

 

Retour de la fonction :

Retourne une constante de type DialogResult qui indique quel bouton à été pressé.

DialogResult.Yes

DialogResult.No

DialogResult.Cancel

DialogResult.Retry

DialogResult.Ok

 Exemple 1:

 Afficher un simple message:

 MessageBox.Show("bonjour")

 Affiche

 

Exemple 2:

 Afficher les boutons Oui Non et un bouton d'aide, une icône d'erreur, tester si l'utilisateur a cliqué sur Oui:

Dim r As DialogResult  (cela marche aussi avec Integer)

r = MessageBox.Show("bonjour", "Programme", MessageBoxButtons.YesNo, MessageBoxIcon.Error,_ MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign, True)

If r = Windows.Forms.DialogResult.Yes Then

..

End If

Affiche:

 

Ecriture plus compact:

If MessageBox.Show("bonjour", "Programme", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes then

.....

End If

 

 

MsgBox du Visual Basic 

L’ancienne syntaxe Visual Basic avec MsgBox est conservée :(A éviter? on l'utilise tous!!)

MessageBox.Show est VB.NET,  MsgBox est du VB.
 
 
Reponse= MsgBox(TexteAAfficher, Style, Titre)
 

Dans ce cas il faut utiliser MsgBoxStyle  et MsgBoxResult pour le retour. De plus les arguments ne sont pas dans le même ordre!!

-Pour le choix des boutons MsgBoxStyle peut prendre les valeurs:

   YesNo (cela affiche 2 boutons "Oui" et "Non"), OkCancel, AbortRetryIgnore...

Pour le choix du bouton par défaut MsgBoxStyle peut prendre les valeurs:

   DefaultButton1, DefaultButton2..

Pour les icônes MsgBoxStyle peut prendre les valeurs:

         Il faut ajouter les styles les uns aux autres avec 'Or'.

           Au retour au a les valeurs:

MsgBoxResult.Yes, MsgBoxResult.No, MsgBoxResult.Cancel... 

 

Exemple simple fournissant un simple message à l'utilisateur:

MsgBox ("Bonjour") affiche une message box avec le message 'Bonjour', un bouton 'Ok' et dans la barre de titre, le nom de l'application. Il n'y a pas de valeur de retour.

 

Exemple courant posant une question, l'utilisateur doit cliquer sur 'oui' ou 'non', on teste si c'est 'oui':

If MsgBox("D'accord?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then

End If

 

Exemple complet :

Dim msg As String

Dim title As String

Dim style As MsgBoxStyle

Dim response As MsgBoxResult

msg = "Voulez vous continuer?"               ' Définition du message à afficher.

style = MsgBoxStyle.DefaultButton2 Or _

   MsgBoxStyle.Critical Or MsgBoxStyle.YesNo 'On affiche Oui Non

title = "MsgBox Démonstration"               ' Définition du  titre.

' Affiche la boite MsgBox.

 

response = MsgBox(msg, style, title)

 

If response = MsgBoxResult.Yes Then  

   ' code si l’utilisateur a cliqué sur Oui

Else

   ' code si l’utilisateur a cliqué sur Non.

End If

Voila ce que cela donne:

‘On remarque que dans l’exemple, on crée des variables dans  lesquelles on met le texte ou les constantes adéquates, avant d’appeler la fonction MsgBox. En condensé cela donne:

If MsgBox("Voulez vous continuer?", MsgBoxStyle.DefaultButton2 Or MsgBoxStyle.Critical Or MsgBoxStyle.YesNo, "MsgBox Démonstration")= MsgBoxResult.Yes Then  

End If

 

InputBox

C'est une fonction qui permet d’ouvrir une fenêtre qui pose une question :

Elle retourne la réponse tapée par l’utilisateur.

Le retour est effectué dans une variable String.

 

Dim Nom As String

Nom = InputBox("Bonjour","Tapez votre nom ?")

Cela donne :

 

 

On pourrait rajouter un 3eme argument=la réponse par défaut.

Si l’utilisateur clique sur le bouton 'Annuler', une chaîne vide est retournée.

 

On a souvent besoin de contrôler si l'utilisateur à tapé quelque chose puis d'enlever les espaces:

Dim reponse As String 'on crée une variable qui contiendra la chaîne tapée par l'utilisateur.

Do

    reponse= InputBox("Tapez un nom") 'saisir une chaîne de caractères dans une InputBox

Loop Until String.IsNullOrEmpty(reponse)'si l'utilisateur n'a rien tapé, on boucle et on réaffiche l'inputbox

 

reponse=reponse.Trim(" ")    'enlève les espaces avant et après

 

 

 

OpenFileDialog

Comment afficher  une boite de dialogue permettant de sélectionner un fichier (ou des fichiers) à ouvrir par exemple ?

Dans la boite à Outils, cliquez sur OpenFileDialog puis cliquez sur la fenêtre en cours : un contrôle OpenFileDialog1 apparaît sous le fenêtre.

 

Ouvre une boite de dialogue permettant de choisir un nom et un chemin de fichier, au programmeur d'écrire le code lisant les fichiers.

Dans le code, à l’endroit ou doit s’ouvrir la  fenêtre,(Dans l'évènement Click d'un bouton nommé 'Ouvrir' par exemple) tapez :

Private Sub ButtonOuvrir_Click()

    OpenFileDialog1.ShowDialog()

End Sub

C’est suffisant pour créer une fenêtre montrant l’arborescence des fichiers et répertoires et pour que l'utilisateur choisisse un fichier:

Mais le plus souvent on a besoin que la boite de dialogue propose un type de fichier et un répertoire précis.

Par exemple je veux ouvrir un fichier .TXT dans le répertoire c:\MesTextes

Il faut dans ce cas, AVANT le ShowDialog renseigner certaines propriétés du contrôle OpenFileDialog1 :

 With OpenFileDialog1

      .Title= "Ouvrir"        'Titre de la barre de titre

    .InitialDirectory = "c:\"   'répertoire de départ        

    .Filter="Fichiers txt|*.txt" ' on travaille uniquement sur les .txt

                              's'il y a plusieurs filtres les séparer par ; 

                                FilterIndex  indique le filtre en cours

    .Multiselect=False        'sélectionner 1 seul fichier

    .CheckFileExists=True     'Message  si nom de fichier qui n'existe pas.

                              'Permet d'ouvrir uniquement un fichier qui existe; CheckPathExists peut aussi être utilisé.

      .ValidateNames=True        'n'accepte que les noms valides (win 32)

     .AddExtension=True        'ajoute une extension au nom s'il n'y en a pas

End With

Comment afficher la boite et vérifier si l'utilisateur à cliqué sur 'Ouvrir'?

La méthode .ShowDialog peut retourner un élément de l'énumération DialogResult pour indiquer l'action de l'utilisateur sur la boite de dialog:

DialogResult.Ok    'si l'utilisateur a cliqué sur 'Ouvrir'

DialogResult.Cancel   'si l'utilisateur a cliqué sur 'Annuler'

Comment utiliser cela?

If OpenFileDialog1.ShowDialog= DialogResult.Ok Then  'L'utilisateur a bien cliqué sur ok

End if   

Maintenant, OpenFileDialog1.FileName contient le nom du fichier sélectionné (avec extension et chemin)

Path.GetFileName(OpenFileDialog1.FileName) donne le nom du fichier sans chemin.

 

SaveFileDialog

Boite de dialogue fonctionnant de la même manière que OpenFileDialog mais avec quelques propriétés spécifiques.

Ouvre une boite de dialogue permettant à l'utilisateur de choisir un nom et un chemin de fichier, au programmeur d'écrire le code enregistrant les fichiers.

SaveFileDialo1.CreatePrompt= True    ' Message de confirmation si

                                     'création d'un nouveau fichier

SaveFileDialo1.OverwritePrompt=True  'Message si le fichier existe déjà

                                     'évite l'effacement d'anciennes données

SaveFileDialo1.DefaultExt="txt"      'extension par défaut

On récupère aussi dans .FileName le nom du fichier si la propriété .ShowDialog à retourné DialogResult.Ok.