Tworzenie graficznego obiektu wyboru datyCreating a Graphical Date Picker

Użyj programu Windows PowerShell 3,0 i nowszych wersji, aby utworzyć formularz z graficznym formantem kalendarza, który umożliwia użytkownikom wybranie dnia miesiąca.Use Windows PowerShell 3.0 and later releases to create a form with a graphical, calendar-style control that lets users select a day of the month.

Tworzenie graficznej kontrolki selektora datCreate a graphical date-picker control

Skopiuj i wklej następujące polecenie do Windows PowerShell ISE, a następnie zapisz go jako skrypt programu Windows PowerShell (. ps1).Copy and then paste the following into Windows PowerShell ISE, and then save it as a Windows PowerShell script (.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 zaczyna się od ładowania dwóch .NET Framework klas: System. Drawing i System. Windows. Forms.The script begins by loading two .NET Framework classes: System.Drawing and System.Windows.Forms. Następnie należy uruchomić nowe wystąpienie klasy .NET Framework klas Windows. Forms. form; zawiera pusty formularz lub okno, do którego można rozpocząć dodawanie kontrolek.You then start a new instance of the .NET Framework class Windows.Forms.Form; that provides a blank form or window to which you can start adding controls.

$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
}

Ten przykład przypisuje wartości do czterech właściwości tej klasy przy użyciu właściwości Właściwości i obiektu Hashtable.This example assigns values to four properties of this class by using the Property property and hashtable.

  1. Pozycja początkowa: Jeśli nie dodasz tej właściwości, system Windows wybierze lokalizację, gdy formularz zostanie otwarty.StartPosition: If you don't add this property, Windows selects a location when the form is opened. Ustawienie tej właściwości na CenterScreenpowoduje automatyczne wyświetlanie formularza w środku ekranu przy każdym załadowaniu.By setting this property to CenterScreen, you're automatically displaying the form in the middle of the screen each time it loads.

  2. Rozmiar: jest to rozmiar formularza (w pikselach).Size: This is the size of the form, in pixels. Poprzedni skrypt tworzy formularz, który jest 243 pikseli o szerokości do 230 pikseli.The preceding script creates a form that's 243 pixels wide by 230 pixels tall.

  3. Tekst: to jest tytuł okna.Text: This becomes the title of the window.

  4. Najwyższy: ustawiając tę właściwość na $true , można wymusić otwarcie okna korzystającego inne otwarte okna i okna dialogowe.Topmost: By setting this property to $true, you can force the window to open atop other open windows and dialog boxes.

Następnie utwórz i Dodaj kontrolkę Calendar w formularzu.Next, create and then add a calendar control in your form. W tym przykładzie bieżący dzień nie jest wyróżniony ani zakreślony.In this example, the current day is not highlighted or circled. Użytkownicy mogą jednocześnie wybrać tylko jeden dzień w kalendarzu.Users can select only one day on the calendar at one time.

$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
    ShowTodayCircle   = $false
    MaxSelectionCount = 1
}
$form.Controls.Add($calendar)

Następnie Utwórz przycisk OK dla formularza.Next, create an OK button for your form. Określ rozmiar i zachowanie przycisku OK .Specify the size and behavior of the OK button. W tym przykładzie pozycja przycisku to 165 pikseli od górnej krawędzi formularza i 38 pikseli od lewej krawędzi.In this example, the button position is 165 pixels from the form's top edge, and 38 pixels from the left edge. Wysokość przycisku wynosi 23 pikseli, a długość przycisku to 75 pikseli.The button height is 23 pixels, while the button length is 75 pixels. Skrypt używa wstępnie zdefiniowanych typów Windows Forms do określenia zachowań przycisków.The script uses predefined Windows Forms types to determine the button behaviors.

$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)

Analogicznie, tworzysz przycisk Anuluj .Similarly, you create a Cancel button. Przycisk Anuluj ma 165 pikseli od góry, ale 113 pikseli od lewej krawędzi okna.The Cancel button is 165 pixels from the top, but 113 pixels from the left edge of the window.

$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.Add the following line of code to display the form in Windows.

$result = $form.ShowDialog()

Na koniec kod wewnątrz if bloku instruuje system Windows, co należy zrobić z formularzem, gdy użytkownicy wybierają dzień w kalendarzu, a następnie kliknij przycisk OK lub naciśnij klawisz Enter .Finally, the code inside the if block instructs Windows what to do with the form after users select a day on the calendar, and then click the OK button or press the Enter key. Program Windows PowerShell wyświetla wybraną datę użytkownikom.Windows PowerShell displays the selected date to users.

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

Zobacz teżSee Also