Tworzenie graficznego obiektu wyboru daty

Użyj Windows PowerShell wersji 3.0 lub nowszej, aby utworzyć formularz z graficzną kontrolką w stylu kalendarza, która umożliwia użytkownikom wybranie dnia miesiąca.

Tworzenie graficznej kontrolki s wyboru daty

Skopiuj i wklej następujący kod 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 .NET Framework klas: System.Drawing i System.Windows. Formularze. Następnie uruchamiasz nowe wystąpienie klasy .NET Framework Windows. Forms.Form; 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 tablicy skrótów.

  1. StartPosition: jeśli nie dodasz tej właściwości, Windows wybierze lokalizację po otwarciu formularza. Ustawiając tę właściwość na CenterScreen, formularz jest automatycznie wyświetlany w środku ekranu przy każdym ładowaniu.

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

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

  4. Najwyższe: ustawiając tę właściwość na wartość , można wymusić otwarcie okna na innych otwartych $true oknach i oknach 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 w okręgu. 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 Windows formularzy 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 znajduje się 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 Windows.

$result = $form.ShowDialog()

Na koniec kod wewnątrz bloku nakazuje użytkownikom Windows, co należy zrobić z formularzem po wybraniu dnia w kalendarzu, a następnie kliknij przycisk OK lub naciśnij klawisz if Enter. Windows PowerShell użytkownikom zostanie wyświetlona wybrana data.

if ($result -eq [Windows.Forms.DialogResult]::OK) {
    $date = $calendar.SelectionStart
    Write-Host "Date selected: $($date.ToShortDateString())"
}

Zobacz też