Een grafische datumkiezer maken

Dit voorbeeld is alleen van toepassing op Windows-platforms.

Gebruik Releases van Windows PowerShell 3.0 en hoger om een formulier te maken met een grafisch besturingselement in agendastijl waarmee gebruikers een dag van de maand kunnen selecteren.

Een grafisch besturingselement voor datumkiezer maken

Kopieer en plak het volgende in Windows PowerShell ISE en sla het bestand op als een PowerShell-scriptbestand (.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.Forms. Vervolgens start u een nieuw exemplaar van de .NET Framework-klasse Windows.Forms.Form. Dit biedt een leeg formulier of venster 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, selecteert Windows een locatie wanneer het formulier wordt geopend. Door deze eigenschap in te stellen op CenterScreen, wordt het formulier automatisch in het midden van het scherm weergegeven 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 is met 230 pixels hoog.

  3. Tekst: Dit wordt de titel van het venster.

  4. Bovenste: Door deze eigenschap in te $truestellen, kunt u afdwingen dat het venster boven op andere geopende vensters en dialoogvensters wordt geopend.

Maak vervolgens een agendabesturingselement in uw formulier en voeg dit toe. In dit voorbeeld is de huidige dag niet gemarkeerd of omcirkeld. Gebruikers kunnen slechts één dag in de agenda tegelijk 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 knoppositie 165 pixels van de bovenrand van het formulier en 38 pixels vanaf de linkerrand. De knophoogte is 23 pixels, terwijl de knoplengte 75 pixels is. Het script maakt gebruik van vooraf gedefinieerde Typen Windows Forms 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 regel code toe om het formulier weer te geven in Windows.

$result = $form.ShowDialog()

Ten slotte geeft de code in het if blok Windows de opdracht wat er met het formulier moet worden gedaan nadat gebruikers een dag in de agenda hebben geselecteerd en klik vervolgens op de knop OK of druk op Enter. Windows PowerShell geeft de geselecteerde datum weer voor gebruikers.

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

Zie ook