lundi 5 mars 2018

Bouton Parcourir (OpenFileDialog)


Dans cet article, nous allons utiliser Windows PowerShell pour ouvrir une fenêtre (Form) et y ajouter le bouton de sélection de fichier "Parcourir" (OpenFileDialog). L'objet OpenFileDialog gère à la fois la création de la fenêtre de sélection, l'exploration des fichiers, et la sélection du fichier. Il ne nous reste plus qu'à configurer quelques options, lancer l'ouverture de la fenêtre, et récupérer le nom du fichier choisi.


 
#Menu contextuel sur un contrôle.
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

#Ouvre une fenêtre.
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object Windows.Forms.Form
$form.text = "Ouvrir un fichier"            
$form.Size = New-Object System.Drawing.Size(250,150)

#Création d'un label (Label).
$label1 = New-Object Windows.Forms.Label
$label1.Location = New-Object Drawing.Point 20,30
$label1.Size = New-Object Drawing.Point 150,16
$label1.text = "Sélectionner un fichier."

#Création d'une zone texte (TextBox).
$texte1 = New-Object Windows.Forms.TextBox
$texte1.Location = New-Object Drawing.Point 20,50
$texte1.Size = New-Object Drawing.Point 140,30
$texte1.Text = ""

#Création d'un bouton parcourir (Button + OpenFileDialog).
$bouton1 = New-Object Windows.Forms.Button
$bouton1.Location = New-Object Drawing.Point 160,49
$bouton1.Size = New-Object Drawing.Point 65,21
$bouton1.text = "Parcourir"
$bouton1.add_click({
                     #Création d'un objet "ouverture de fichier".
                     $ouvrir1 = New-Object System.Windows.Forms.OpenFileDialog

                     #Initialisation du chemin par défaut.
                     $ouvrir1.initialDirectory = "C:\"

                     #Ici on va afficher que les fichiers en ".txt".
                     $ouvrir1.filter = "TXT Files (*.txt)| *.txt"

                     #Affiche la fenêtre d'ouverture de fichier.
                     $retour1 = $ouvrir1.ShowDialog()

                     #Traitement du retour.
                     #Si "OK" on affiche le fichier sélectionné dans la TextBox.
                     #Sinon on afficher un fichier par défaut.
                     if ($retour1 -eq "OK") { $texte1.Text = $ouvrir1.filename }
                     else { $texte1.Text = "C:\jumbor12.txt" }
                  })

#Attache le contrôle à la fenêtre.
$form.controls.add($label1)
$form.controls.add($texte1)
$form.controls.add($bouton1)#Affiche le tout.
$form.ShowDialog()

#Fin.



Dans notre exemple, nous n'avons pas intégré la vérification de l'existence du fichier en cas de saisi manuel dans la TextBox. Pour faire cette vérification, nous pouvons utiliser la commande "Test-Path" :


$fichier1 = "C:\jumpor12.jpg"
$test1 = Test-Path $fichier1
if ($test1 -ne "True") { Write-Host "Fichier absent."  }
else                   { Write-Host "Fichier présent." }