Výběr položek ze seznamu

Tato ukázka platí jenom pro platformy Windows.

Pomocí windows PowerShellu 3.0 a novějších verzí vytvořte dialogové okno, které uživatelům umožňuje vybrat položky z ovládacího prvku seznam.

Vytvoření ovládacího prvku seznam a výběr položek z něj

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 = 'Select a Computer'
$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 select a computer:'
$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.Height = 80

[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')

$form.Controls.Add($listBox)

$form.Topmost = $true

$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $listBox.SelectedItem
    $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.

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

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 = 'Select a Computer'
$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.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)

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. V takovém případě chcete, aby uživatelé vybrali počítač.

$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 select a computer:'
$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ě seznamů; 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)
$listBox.Height = 80

V další části zadáte hodnoty, které má seznam zobrazovat uživatelům.

Poznámka:

Seznam vytvořený tímto skriptem umožňuje pouze jeden výběr. Chcete-li vytvořit ovládací prvek seznamu, který umožňuje více výběrů, zadejte hodnotu pro SelectionMode vlastnost, podobně jako následující: $listBox.SelectionMode = 'MultiExtended'. Další informace naleznete v tématu Seznamy s vícenásobným výběrem.

[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')

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ř bloku If dává systému Windows pokyn, co dělat s formulářem poté, co uživatelé vyberou možnost ze seznamu, a potom klikněte na tlačítko OK nebo stiskněte klávesu Enter .

if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
    $x = $listBox.SelectedItem
    $x
}

Viz také