Ouvrir une fenêtre de sélection de fichier(s)

Page 1 / 1

Il est toujours intéressant de permettre un l'utilisateur de naviguer sur son disque dur lorsqu'il doit spécifier le chemin d'un fichier.
Pour cela, rien de plus simple, il suffit d'utiliser le composant "OpenFileDialog" fournis dans le ".Net Framework".

Pour ce tutoriel, vous aurez besoin :
1) d'un "TextBox" avec comme propriété :
- Name : TB_chemin_fichier
2) d'un "ListBox" avec comme propriété :
- Name : LBOX_chemins_fichiers
3) d'un "ListBox" avec comme propriété :
- Name : LBOX_noms_fichiers
4) d'un "Button" avec comme propriété :
- Name : BT_parcourir_fichier
- Text : Parcourir
5) d'un "OpenFileDialog" avec comme propriété :
- Name : OpenFileDialog1 (nom par défaut)

Le composant "OpenFileDialog" est assez complet et vous permet donc de le personnaliser en modifiant le titre de la fenêtre, en filtrant les fichiers affichés suivant leurs extensions, ...

  1. Afficher la fenêtre de sélection de fichier(s)
  2. Vérifier l'existence du fichier sélectionné
  3. Définir une extension de fichier par défaut
  4. Spécifier le nom du fichier que l'utilisateur doit sélectionner
  5. Filtrer les fichiers affichés suivant leurs extensions
  6. Définir le dossier par défaut
  7. Activer ou désactiver la sélection multiple de fichiers
  8. Modifier le titre de la fenêtre
  9. Récupérer le ou les noms / chemins du ou des fichiers sélectionnés (+ sources)

1. Afficher la fenêtre de sélection de fichier(s)

Pour afficher la fenêtre de sélection de fichier(s), vous devez appelé la méthode "ShowDialog()" qui vous renverra un "Windows.Forms.DialogResult" pour que vous sachiez si l'utilisateur a sélectionné un fichier ou non.
Le plus simple étant donc de faire ceci :

VB.NET

' On affiche le formulaire et on teste si l'utilisateur a bien sélectionné un fichier.
' L'utilisateur aura donc cliqué sur le bouton OK.
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
  MsgBox("Un fichier a bien été sélectionné", MsgBoxStyle.Information)
Else
  ' Si l'utilisateur n'a pas sélectionné de fichier, on lui affiche un avertissement
  MsgBox("Aucun fichier n'a été sélectionné", MsgBoxStyle.Exclamation, "Aucun fichier sélectionné")
End If

2. Vérifier l'existence du fichier sélectionné

Cette fonctionnalité est activée par défaut via les propriétés "CheckFileExists" et "CheckPathExists" qui vérifieront que le fichier et le chemin du fichier existent bien.

VB.NET

' Vérifie que le fichier existe
OpenFileDialog1.CheckFileExists = True
' Vérifie que le chemin d'accès du fichier existe
OpenFileDialog1.CheckPathExists = True

3. Définir une extension de fichier par défaut

Vous pouvez définir une extension par défaut à ajouter derrière le nom du fichier spécifié par l'utilisateur (si celui-ci omet d'indiquer l'extension du fichier).
Pour cela, renseignez la propriété "DefaultExt".

VB.NET

OpenFileDialog1.DefaultExt = "jpg"

4. Spécifier le nom du fichier que l'utilisateur doit sélectionner

Cette propriété est intéressante lorsque vous attendez un fichier précis à sélectionner. Par exemple, lorsque l'utilisateur peut sélectionner un fichier de configuration qui à un nom bien précis.
Pour cela, indiquez le nom du fichier dans la propriété "FileName".

VB.NET

OpenFileDialog1.FileName = "Logo.png"

5. Filtrer les fichiers affichés suivant leurs extensions

Pour filtrer la liste des fichiers affichés, il suffit de spécifié un filtre via la propriété "Filter". C'est ce système qui est utilisé par la majorité des programmes dont ceux d'édition d'image, de pages web, ...

Voici un exemple permettant d'afficher les images jpg, png, gif ou tous les fichiers suivant le choix de l'utilisateur.

VB.NET

OpenFileDialog1.Filter = "Images JPEG|*.jpg|Images PNG|*.png|Images animées|*.gif|Tous les fichiers|*.*"

Ainsi le code suivant permettra à l'utilisateur d'afficher tel ou tel format d'image ou tous les fichiers du dossier dans lequel il se trouve.

6. Définir le dossier par défaut

Il est possible de définir le dossier par défaut dans lequel l'utilisateur se trouvera à l'ouverture de la fenêtre de sélection via la propriété "InitialDirectory".
Si le dossier n'existe pas, le dossier par défaut sera le dossier "Mes documents".

VB.NET

OpenFileDialog1.InitialDirectory = "d:\mon dossier"

7. Activer ou désactiver la sélection multiple de fichiers

Il est possible d'activer ou désactiver la sélection multiple de fichiers mais si vous l'activez, cela veut dire qu'un tableau sera retourné par ce composant au lieu d'une simple chaine de caractères. La récupération de cette ou ces informations ne fera donc pas de la même manière. Pour activer ou désactiver cette fonctionnalité, modifier la propriété "MultiSelect".

VB.NET

' Active la sélection multiple
OpenFileDialog1.Multiselect = True
' Désactive la sélection multiple
OpenFileDialog1.Multiselect = False

8. Modifier le titre de la fenêtre

Pour modifier le titre de la fenêtre permettant de sélectionner un ou des fichiers, vous devrez comme vous l'aurez deviné, modifier la propriété "Title".

VB.NET

OpenFileDialog1.Title = "Mon titre"

9. Récupérer le ou les noms / chemins du ou des fichiers sélectionnés

Comme le titre de cette section vous l'indique, 2 cas de figures se posent :
- Soit la sélection multiple est désactivée, et il faudra simplement récupérer le chemin du fichier sélectionné
- Soit la sélection multiple est activée, et dans ce cas il faudra récupérer un tableau de fichiers et donc le parcourir avec une boucle.

Commençons par le 1er cas qui est plus simple à comprendre :

VB.NET

' On affiche le formulaire et on teste si l'utilisateur a bien sélectionné un fichier.
' L'utilisateur aura donc cliqué sur le bouton OK.
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then

  ' Récupère le chemin complet du fichier sélectionné par l'utilisateur
  TB_chemin_fichier.Text = OpenFileDialog1.FileName
  
  ' Affiche le nom du fichier (seulement) sélectionné, à l'utilisateur
  MsgBox("Vous avez sélectionné le fichier : " & OpenFileDialog1.SafeFileName)
  
Else
  ' Si l'utilisateur n'a pas sélectionné de fichier, on lui affiche un avertissement
  MsgBox("Aucun fichier n'a été sélectionné", MsgBoxStyle.Exclamation, "Aucun fichier sélectionné")
End If

Télécharger la source

Pour le 2ème cas, nous allons utiliser une boucle "For Each" qui est la plus appropriée pour parcourir ce type de tableau.

VB.NET

' On affiche le formulaire et on teste si l'utilisateur a bien sélectionné un fichier.
' L'utilisateur aura donc cliqué sur le bouton OK.
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then

  ' On vide les listes (ListBox)
  LBOX_chemins_fichiers.Items.Clear()
  LBOX_noms_fichiers.Items.Clear()

  ' On parcoure la liste des fichiers sélectionnés par l'utilisateur
  For Each chemin_fichier As String In OpenFileDialog1.SafeFileNames
    ' Et on ajoute leurs chemins dans la liste (ListBox)
    LBOX_chemins_fichiers.Items.Add(chemin_fichier)
  Next

  ' On re-parcoure la liste des fichiers sélectionnés par l'utilisateur
  For Each nom_fichier As String In OpenFileDialog1.FileNames
    ' Et on ajoute leurs chemins dans la liste (ListBox)
    LBOX_noms_fichiers.Items.Add(nom_fichier)
  Next

Else
  ' Si l'utilisateur n'a pas sélectionné de fichier, on lui affiche un avertissement
  MsgBox("Aucun fichier n'a été sélectionné", MsgBoxStyle.Exclamation, "Aucun fichier sélectionné")
End If

Télécharger la source