Seznamy s vícenásobným výběrem
Tato ukázka platí jenom pro platformy Windows.
K vytvoření ovládacího prvku se seznamem s vícenásobným výběrem ve vlastním formuláři Windows Form použijte Windows PowerShell 3.0 a novější verze.
Vytvoření ovládacích prvků seznamu, které umožňují více výběrů
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 System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please make a selection from the list below:'
$form.Controls.Add($label)
$listBox = New-Object System.Windows.Forms.Listbox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,20)
$listBox.SelectionMode = 'MultiExtended'
[void] $listBox.Items.Add('Item 1')
[void] $listBox.Items.Add('Item 2')
[void] $listBox.Items.Add('Item 3')
[void] $listBox.Items.Add('Item 4')
[void] $listBox.Items.Add('Item 5')
$listBox.Height = 70
$form.Controls.Add($listBox)
$form.Topmost = $true
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $listBox.SelectedItems
$x
}
Skript začíná načtením dvou tříd rozhraní .NET Framework: System.Drawing a System.Windows.Forms. Potom spustíte novou instanci třídy .NET Framework System.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 System.Windows.Forms.Form
Po vytvoření instance třídy Form přiřaďte hodnoty třem vlastnostem této třídy.
- Text. Tím se stane název okna.
- Velikost: Jedná se o velikost formuláře v pixelech. Předchozí skript vytvoří formulář o šířce 300 pixelů o 200 pixelů na výšku.
- Počáteční umístění. Tato volitelná vlastnost je nastavena na CenterScreen v předchozím skriptu. Pokud tuto vlastnost nepřidáte, systém Windows při otevření formuláře vybere umístění. Když nastavíte Počáteční umístění na Obrazovku CenterScreen, automaticky se formulář zobrazí uprostřed obrazovky při každém načtení obrazovky.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
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 120 pixelů od horního okraje formuláře a 75 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 System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.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 120 pixelů, ale 150 pixelů od levého okraje okna.
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)
V dalším kroku zadejte text popisku v okně, který popisuje informace, které mají uživatelé poskytnout.
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please make a selection from the list below:'
$form.Controls.Add($label)
Přidejte ovládací prvek (v tomto případě seznam), který umožňuje uživatelům zadat informace, které jste popsali v textu štítku. Existuje mnoho dalších ovládacích prvků, které můžete použít kromě textových polí; Další ovládací prvky naleznete v tématu System.Windows.Forms Namespace.
$listBox = New-Object System.Windows.Forms.Listbox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,20)
Tady je postup, jak určíte, že chcete uživatelům povolit výběr více hodnot ze seznamu.
$listBox.SelectionMode = 'MultiExtended'
V další části zadáte hodnoty, které má seznam zobrazovat uživatelům.
[void] $listBox.Items.Add('Item 1')
[void] $listBox.Items.Add('Item 2')
[void] $listBox.Items.Add('Item 3')
[void] $listBox.Items.Add('Item 4')
[void] $listBox.Items.Add('Item 5')
Zadejte maximální výšku ovládacího prvku seznam.
$listBox.Height = 70
Přidejte do formuláře ovládací prvek seznam a dejte windows pokyn, aby po otevření otevřel okno formuláře na vrcholu ostatních oken a dialogových oken.
$form.Controls.Add($listBox)
$form.Topmost = $true
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, když uživatelé vyberou jednu nebo více možností ze seznamu a potom kliknete na tlačítko OK nebo stisknete klávesu Enter .
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $listBox.SelectedItems
$x
}