Een grafische datumkiezer maken

Gebruik Windows PowerShell 3.0 en latere releases om een formulier te maken met een grafisch, kalenderstijlbesturingselement waarmee gebruikers een dag van de maand kunnen selecteren.

Een grafisch besturingselement voor datum kiezen maken

Kopieer en plak het volgende in Windows PowerShell ISE en sla het op als een 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())"
}

Het script begint met het laden van twee .NET Framework klassen: System.Drawing en System.Windows. Formulieren. Vervolgens start u een nieuw exemplaar van de .NET Framework klasse Windows. Forms.Form; dat een leeg formulier of venster bevat waaraan u besturingselementen kunt toevoegen.

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

In dit voorbeeld worden waarden toegewezen aan vier eigenschappen van deze klasse met behulp van de eigenschap Eigenschap en hashtabel.

  1. StartPosition: als u deze eigenschap niet toevoegt, Windows een locatie selecteren wanneer het formulier wordt geopend. Door deze eigenschap in te stellen op CenterScreen, wordt het formulier automatisch weergegeven in het midden van het scherm telkens wanneer het wordt geladen.

  2. Grootte: dit is de grootte van het formulier, in pixels. Met het voorgaande script wordt een formulier gemaakt dat 243 pixels breed en 230 pixels lang is.

  3. Text: dit wordt de titel van het venster.

  4. Meest belangrijk: door deze eigenschap in te stellen op , kunt u het venster dwingen om op andere $true geopende vensters en dialoogvensters te openen.

Maak vervolgens een kalenderbesturingselement in uw formulier en voeg dit toe. In dit voorbeeld is de huidige dag niet gemarkeerd of omcirkeld. Gebruikers kunnen slechts één dag tegelijk in de agenda selecteren.

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

Maak vervolgens een knop OK voor uw formulier. Geef de grootte en het gedrag van de knop OK op. In dit voorbeeld is de positie van de knop 165 pixels van de bovenrand van het formulier en 38 pixels vanaf de linkerrand. De hoogte van de knop is 23 pixels, terwijl de knoplengte 75 pixels is. Het script maakt gebruik van vooraf gedefinieerde Windows formuliertypen om het gedrag van de knop te bepalen.

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

Op dezelfde manier maakt u een knop Annuleren. De knop Annuleren is 165 pixels vanaf de bovenkant, maar 113 pixels vanaf de linkerrand van het venster.

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

Voeg de volgende coderegel toe om het formulier weer te geven in Windows.

$result = $form.ShowDialog()

Ten slotte geeft de code in het blok aan Windows wat er met het formulier moet worden doen nadat gebruikers een dag in de agenda hebben geselecteerd en vervolgens op de knop OK klikken of op if Enter drukken. Windows PowerShell de geselecteerde datum weergegeven voor gebruikers.

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

Zie ook