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.
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.
Velikost: Jedná se o velikost formuláře v pixelech. Předchozí skript vytvoří formulář o šířce 243 pixelů o výšku 230 pixelů.
Text: Tím se stane název okna.
Topmost: Nastavením této vlastnosti
$true
můž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())"
}