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

Tato ukázka platí jenom pro platformy Windows.

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

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

Zkopírujte následující kód a vložte ho do prostředí Windows PowerShell ISE a uložte ho jako soubor powershellového skriptu (.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. To 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 Obrazovku 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 výšku 230 pixelů.

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

  4. Topmost: Nastavením této vlastnosti $truemůžete vynutit, aby okno otevřelo další otevřená okna a dialogová okna.

Potom ve formuláři vytvořte a přidejte ovládací prvek kalendáře. V tomto příkladu není aktuální den zvýrazněný ani zakroužkovaný. Uživatelé můžou v kalendáři vybrat jenom jeden den 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á k určení chování tlačítka předdefinované typy model Windows Forms.

$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 Zrušit . 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 poté, co uživatelé vyberou den v kalendáři, a potom 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é