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.

  1. 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.

  2. Rozmiar: jest to rozmiar formularza w pikselach. Powyższy skrypt tworzy formularz o szerokości 243 pikseli o wysokości 230 pikseli.

  3. Tekst: staje się to tytułem okna.

  4. 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())"
}

Zobacz też