Tworzenie graficznego obiektu wyboru daty

Użyj Windows PowerShell wersji 3.0 i nowszych, aby utworzyć formularz z graficzną kontrolką w stylu kalendarza, która pozwala użytkownikom wybrać dzień miesiąca.

Tworzenie graficznej kontrolki selektora dat

Skopiuj i wklej następujące polecenie do Windows PowerShell ISE, a następnie zapisz go jako skrypt Windows 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 .NET Framework: System.Drawing i System.Windows.Forms. Następnie uruchom nowe wystąpienie klasy .NET Framework Windows.Forms.Form, które udostępnia 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ótowej.

  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 na ś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 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 Windows Forms w celu określenia zachowania przycisku.

$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 ma 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 kliknij przycisk OK lub naciśnij klawisz Enter . 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ż