Bonjour,
J'aimerai récupérer 2 dates choisies par l'utilisateur via un calendrier GUI
J'ai donc crée un module avec une fonction qui prend des objets Windows.Forms.Form, Windows.Forms.MonthCalendar et Windows.Forms.Button en paramètre afin de créer un calendrier avec un certain nombre de paramètre :
calendar.psm1
Et dans mon script, je crée les différents objets que je passe ensuite à cette fonction pour obtenir 2 calendriers et pouvoir les afficher successivement (pour la sélection d'une date de début puis une date de fin).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing function NewCalendarBis($form, $calendar, $okButton, $cancelButton){ $form.StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen $form.Size = New-Object Drawing.Size 243, 230 $form.Text = 'Select a Date' $form.Topmost = $true $calendar.ShowTodayCircle = $false $calendar.MaxSelectionCount = 2 $form.Controls.Add($calendar) $okButton.Location = New-Object Drawing.Point 38, 165 $okButton.Size = New-Object Drawing.Size 75, 23 $okButton.Text = 'OK' $okButton.DialogResult = [Windows.Forms.DialogResult]::OK $form.AcceptButton = $okButton $form.Controls.Add($okButton) $cancelButton.Location = New-Object Drawing.Point 113, 165 $cancelButton.Size = New-Object Drawing.Size 75, 23 $cancelButton.Text = 'Cancel' $cancelButton.DialogResult = [Windows.Forms.DialogResult]::Cancel $form.CancelButton = $cancelButton $form.Controls.Add($cancelButton) return $form }
Script.ps1
La chose bizarre que je ne comprends pas, c'est qu'après la première fois où j'ai exécuté le script (Powershell ISE), la date que m'affiche les Write-Host reste toujours la même à chaque fois que je ré-exécute le script (peu importe le jour cliqué dans le calendrier). En plus de cela, même la première fois que j'ai exécuté le script, il m'a affiché 2 fois la même date alors que j'avais sélectionné 2 dates différentes pour les 2 calendriers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Import-Module C:\Scripts\calendarbis.psm1 $form2 = New-Object Windows.Forms.Form $form1 = New-Object Windows.Forms.Form $calendar2 = New-Object Windows.Forms.MonthCalendar $calendar1 = New-Object Windows.Forms.MonthCalendar $okButton2 = New-Object Windows.Forms.Button $okButton1 = New-Object Windows.Forms.Button $cancelButton2 = New-Object Windows.Forms.Button $cancelButton1 = New-Object Windows.Forms.Button $calendrierForm2 = NewCalendar $form2 $calendar2 $okButton2 $cancelButton2 $calendrierForm1 = NewCalendar $form1 $calendar1 $okButton1 $cancelButton1 $res2 = $calendrierForm2.ShowDialog() if ($res2 -eq [Windows.Forms.DialogResult]::OK) { $date2 = $calendar2.SelectionStart Write-Host "Date selected: $($date2.ToShortDateString())" } $res1 = $calendrierForm1.ShowDialog() if ($res1 -eq [Windows.Forms.DialogResult]::OK) { $date1 = $calendar1.SelectionStart Write-Host "Date selected: $($date1.ToShortDateString())" }
Merci d'avance pour votre aide sur ce sujet
Partager