Vytvoření grafického ovládacího prvku pro výběr data

Pomocí Windows PowerShell verze 3.0 a novějších verzí můžete vytvořit formulář s grafickým ovládacím prvku ve stylu kalendáře, který umožňuje uživatelům vybrat den v měsíci.

Vytvoření grafického ovládacího prvku pro výběr data

Zkopírujte a vložte následující kód do Windows PowerShell ISE a uložte ho jako skript 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())"
}

Skript začíná načtením dvou tříd rozhraní .NET Framework: System.Drawing a System.Windows.Forms. Pak spustíte novou instanci třídy .NET Framework Windows.Forms.Form; poskytuje prázdný formulář nebo okno, do kterého můžete začít přidávat ovládací prvky.

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

Tento příklad přiřadí hodnoty čtyř vlastnostem této třídy pomocí vlastnosti Property a hashtable.

  1. StartPosition: Pokud tuto vlastnost nepřidáte, systém Windows při otevření formuláře vybere umístění. Nastavením této vlastnosti na CenterScreen automaticky zobrazujete formulář uprostřed obrazovky pokaždé, když se načte.

  2. Velikost: Jedná se o velikost formuláře v pixelech. Předchozí skript vytvoří formulář o šířce 243 pixelů o 230 pixelů na výšku.

  3. Text: Tím se stane název okna.

  4. Nejvíce: Nastavením této vlastnosti na $truemožnost můžete vynutit otevření okna na vrcholu ostatních otevřených oken a dialogových oken.

Dále vytvořte a přidejte ovládací prvek kalendáře ve formuláři. V tomto příkladu není aktuální den zvýrazněný ani zakroužkovaný. Uživatelé můžou vybrat jenom jeden den v kalendáři najednou.

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

Dále vytvořte tlačítko OK pro formulář. Zadejte velikost a chování tlačítka OK . V tomto příkladu je pozice tlačítka 165 pixelů od horního okraje formuláře a 38 pixelů od levého okraje. Výška tlačítka je 23 pixelů, zatímco délka tlačítka je 75 pixelů. Skript používá předdefinované typy model Windows Forms k určení chování tlačítek.

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

Podobně vytvoříte tlačítko Storno . Tlačítko Zrušit je od horního okraje 165 pixelů, ale 113 pixelů od levého okraje 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)

Přidejte následující řádek kódu, který zobrazí formulář ve Windows.

$result = $form.ShowDialog()

Nakonec kód uvnitř if bloku dává systému Windows pokyn, co má dělat s formulářem po výběru dne v kalendáři a poté klikněte na tlačítko OK nebo stiskněte klávesu Enter . Windows PowerShell zobrazí vybrané datum uživatelům.

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

Viz také