Een grafische datum objectkiezer makenCreating a Graphical Date Picker

Gebruik Windows PowerShell 3.0 en latere versies te maken van een formulier met een grafische, agenda-stijl-besturingselement waarmee gebruikers een dag van de maand selecteren.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.

Het maken van een besturingselement grafische datum kiezenCreate a graphical date-picker control

Kopieer en plak het volgende in Windows PowerShell ISE en vervolgens opslaan als een Windows PowerShell-script (.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 

$form.Text = "Select a Date" 
$form.Size = New-Object Drawing.Size @(243,230) 
$form.StartPosition = "CenterScreen"

$calendar = New-Object System.Windows.Forms.MonthCalendar 
$calendar.ShowTodayCircle = $False
$calendar.MaxSelectionCount = 1
$form.Controls.Add($calendar) 

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(38,165)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(113,165)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

$form.Topmost = $True

$result = $form.ShowDialog() 

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

Het script begint met het laden van twee klassen van .NET Framework: System.Drawing en System.Windows.Forms.The script begins by loading two .NET Framework classes: System.Drawing and System.Windows.Forms. Vervolgens start u een nieuw exemplaar van de .NET Framework-klasse Windows.Forms.Form; die zorgt voor een leeg formulier of besturingselementen venster waarnaar u kunt starten toe te voegen.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

Nadat u een exemplaar van de klasse van het formulier hebt gemaakt, kunt u de waarden toewijzen aan drie eigenschappen van deze klasse.After you create an instance of the Form class, assign values to three properties of this class.

  • De tekst.Text. Dit wordt de titel van het venster.This becomes the title of the window.

  • Grootte.Size. Dit is de grootte van het formulier in pixels.This is the size of the form, in pixels. Dit script maakt een formulier 243 pixels breed met 230 pixels hoog.The preceding script creates a form that’s 243 pixels wide by 230 pixels tall.

  • StartingPosition.StartingPosition. Deze optionele eigenschap is ingesteld op CenterScreen in het voorgaande script.This optional property is set to CenterScreen in the preceding script. Als u deze eigenschap niet toevoegt, wordt een locatie geselecteerd wanneer het formulier wordt geopend.If you don’t add this property, Windows selects a location when the form is opened. Door in te stellen de StartingPosition naar CenterScreen, u automatisch weergeeft het formulier in het midden van het scherm elke keer dat wordt geladen.By setting the StartingPosition to CenterScreen, you’re automatically displaying the form in the middle of the screen each time it loads.

$form.Text = "Select a Date" 
$form.Size = New-Object Drawing.Size @(243,230) 
$form.StartPosition = "CenterScreen"

Vervolgens maken en voeg vervolgens een kalenderbesturingselement in het formulier.Next, create and then add a calendar control in your form. De huidige dag is niet in dit voorbeeld gemarkeerd of omcirkeld.In this example, the current day is not highlighted or circled. Gebruikers kunnen slechts één dag in de kalender in één keer selecteren.Users can select only one day on the calendar at one time.

$calendar = New-Object System.Windows.Forms.MonthCalendar 
$calendar.ShowTodayCircle = $False
$calendar.MaxSelectionCount = 1
$form.Controls.Add($calendar)

Maak vervolgens een OK knop voor het formulier.Next, create an OK button for your form. Geef de grootte en het gedrag van de OK knop.Specify the size and behavior of the OK button. In dit voorbeeld is de knop positie 165 pixels vanaf de bovenkant van het formulier en 38 pixels van de linkerrand.In this example, the button position is 165 pixels from the form’s top edge, and 38 pixels from the left edge. De hoogte van de knop wordt 23 pixels wanneer de lengte van de knop 75 pixels.The button height is 23 pixels, while the button length is 75 pixels. Het script maakt gebruik van vooraf gedefinieerde Windows Forms-typen om te bepalen het gedrag van de knop.The script uses predefined Windows Forms types to determine the button behaviors.

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(38,165)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

Op deze manier maakt u een annuleren knop.Similarly, you create a Cancel button. De annuleren knop 165 pixels vanaf de bovenkant, maar 113 pixels van de linkerrand van het venster is.The Cancel button is 165 pixels from the top, but 113 pixels from the left edge of the window.

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(113,165)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

Stel de Topmost eigenschap $True om af te dwingen van het venster te openen op een andere geopende vensters en dialoogvensters.Set the Topmost property to $True to force the window to open atop other open windows and dialog boxes.

$form.Topmost = $True

Voeg de volgende regel code om het formulier in Windows weer te geven.Add the following line of code to display the form in Windows.

$result = $form.ShowDialog()

Ten slotte de code in de als blok geeft Windows opdracht wat te doen met het formulier wanneer gebruikers een dag in de kalender selecteren en klik vervolgens op de OK of drukt u op de Enter sleutel.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. Windows PowerShell geeft de geselecteerde datum bij gebruikers.Windows PowerShell displays the selected date to users.

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

Zie ookSee Also