Tworzenie graficznego selektora daty
Ten przykład dotyczy tylko platform systemu Windows.
Użyj programu Windows PowerShell 3.0 i nowszych wersji, aby utworzyć formularz z graficzną kontrolką w stylu kalendarza, która umożliwia użytkownikom wybranie dnia miesiąca.
Tworzenie graficznej kontrolki selektora dat
Skopiuj i wklej następujący kod do środowiska Windows PowerShell ISE, a następnie zapisz go jako plik skryptu programu PowerShell (.ps1
).
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object Windows.Forms.Form -Property @{
StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
Size = New-Object Drawing.Size 243, 230
Text = 'Select a Date'
Topmost = $true
}
$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
ShowTodayCircle = $false
MaxSelectionCount = 1
}
$form.Controls.Add($calendar)
$okButton = New-Object Windows.Forms.Button -Property @{
Location = New-Object Drawing.Point 38, 165
Size = New-Object Drawing.Size 75, 23
Text = 'OK'
DialogResult = [Windows.Forms.DialogResult]::OK
}
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object Windows.Forms.Button -Property @{
Location = New-Object Drawing.Point 113, 165
Size = New-Object Drawing.Size 75, 23
Text = 'Cancel'
DialogResult = [Windows.Forms.DialogResult]::Cancel
}
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$result = $form.ShowDialog()
if ($result -eq [Windows.Forms.DialogResult]::OK) {
$date = $calendar.SelectionStart
Write-Host "Date selected: $($date.ToShortDateString())"
}
Skrypt rozpoczyna się od załadowania dwóch klas programu .NET Framework: System.Drawing i System.Windows.Forms. Następnie uruchom nowe wystąpienie klasy .NET Framework Windows.Forms.Form. Zapewnia to pusty formularz lub okno, do którego można rozpocząć dodawanie kontrolek.
$form = New-Object Windows.Forms.Form -Property @{
StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
Size = New-Object Drawing.Size 243, 230
Text = 'Select a Date'
Topmost = $true
}
W tym przykładzie wartości są przypisywane do czterech właściwości tej klasy przy użyciu właściwości Property i tabeli skrótu.
StartPosition: Jeśli ta właściwość nie zostanie dodana, system Windows wybierze lokalizację po otwarciu formularza. Ustawiając tę właściwość na CenterScreen, automatycznie wyświetlasz formularz w środku ekranu za każdym razem, gdy zostanie załadowany.
Rozmiar: jest to rozmiar formularza w pikselach. Powyższy skrypt tworzy formularz o szerokości 243 pikseli o wysokości 230 pikseli.
Tekst: staje się to tytułem okna.
Najważniejsze: ustawiając tę właściwość na
$true
, możesz wymusić otwarcie okna na szczycie innych otwartych okien i okien dialogowych.
Następnie utwórz, a następnie dodaj kontrolkę kalendarza w formularzu. W tym przykładzie bieżący dzień nie jest wyróżniony ani okręgowy. Użytkownicy mogą wybrać tylko jeden dzień w kalendarzu jednocześnie.
$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
ShowTodayCircle = $false
MaxSelectionCount = 1
}
$form.Controls.Add($calendar)
Następnie utwórz przycisk OK dla formularza. Określ rozmiar i zachowanie przycisku OK . W tym przykładzie pozycja przycisku wynosi 165 pikseli od górnej krawędzi formularza i 38 pikseli od lewej krawędzi. Wysokość przycisku wynosi 23 piksele, a długość przycisku wynosi 75 pikseli. Skrypt używa wstępnie zdefiniowanych typów formularzy systemu Windows do określania zachowań przycisków.
$okButton = New-Object Windows.Forms.Button -Property @{
Location = New-Object Drawing.Point 38, 165
Size = New-Object Drawing.Size 75, 23
Text = 'OK'
DialogResult = [Windows.Forms.DialogResult]::OK
}
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
Podobnie utworzysz przycisk Anuluj . Przycisk Anuluj jest 165 pikseli od góry, ale 113 pikseli od lewej krawędzi okna.
$cancelButton = New-Object Windows.Forms.Button -Property @{
Location = New-Object Drawing.Point 113, 165
Size = New-Object Drawing.Size 75, 23
Text = 'Cancel'
DialogResult = [Windows.Forms.DialogResult]::Cancel
}
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
Dodaj następujący wiersz kodu, aby wyświetlić formularz w systemie Windows.
$result = $form.ShowDialog()
Na koniec kod wewnątrz if
bloku instruuje systemOwi Windows, co zrobić z formularzem po wybraniu przez użytkowników dnia w kalendarzu, a następnie kliknięciu przycisku OK lub naciśnięciu klawisza Enter . Program Windows PowerShell wyświetla wybraną datę dla użytkowników.
if ($result -eq [Windows.Forms.DialogResult]::OK) {
$date = $calendar.SelectionStart
Write-Host "Date selected: $($date.ToShortDateString())"
}