Items selecteren in een keuzelijst

Dit voorbeeld is alleen van toepassing op Windows-platforms.

Gebruik Releases van Windows PowerShell 3.0 en hoger om een dialoogvenster te maken waarmee gebruikers items kunnen selecteren in een keuzelijst.

Een besturingselement voor een keuzelijst maken en er items uit selecteren

Kopieer en plak het volgende in Windows PowerShell ISE en sla het bestand op als een PowerShell-scriptbestand (.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
}

Het script begint met het laden van twee .NET Framework-klassen: System.Drawing en System.Windows.Forms. Vervolgens start u een nieuw exemplaar van de .NET Framework-klasse System.Windows.Forms.Form. Dit biedt een leeg formulier of venster waaraan u besturingselementen kunt toevoegen.

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

Nadat u een exemplaar van de formulierklasse hebt gemaakt, wijst u waarden toe aan drie eigenschappen van deze klasse.

  • Tekst. Dit wordt de titel van het venster.
  • Grootte. Dit is de grootte van het formulier, in pixels. Het voorgaande script maakt een formulier van 300 pixels breed met 200 pixels hoog.
  • StartingPosition. Deze optionele eigenschap is ingesteld op CenterScreen in het voorgaande script. Als u deze eigenschap niet toevoegt, selecteert Windows een locatie wanneer het formulier wordt geopend. Door de Startpositie in te stellen op CenterScreen, wordt het formulier automatisch in het midden van het scherm weergegeven telkens wanneer het wordt geladen.
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Maak vervolgens een knop OK voor uw formulier. Geef de grootte en het gedrag van de knop OK op. In dit voorbeeld is de knoppositie 120 pixels van de bovenrand van het formulier en 75 pixels vanaf de linkerrand. De knophoogte is 23 pixels, terwijl de knoplengte 75 pixels is. Het script maakt gebruik van vooraf gedefinieerde Typen Windows Forms om het gedrag van de knop te bepalen.

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

Op dezelfde manier maakt u een knop Annuleren . De knop Annuleren is 120 pixels vanaf de bovenkant, maar 150 pixels vanaf de linkerrand van het venster.

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

Geef vervolgens labeltekst op in het venster waarin de informatie wordt beschreven die gebruikers moeten opgeven. In dit geval wilt u dat gebruikers een computer selecteren.

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

Voeg het besturingselement (in dit geval een keuzelijst) toe waarmee gebruikers de informatie kunnen opgeven die u in de labeltekst hebt beschreven. Er zijn veel andere besturingselementen die u naast keuzelijsten kunt toepassen; Zie System.Windows.Forms-naamruimte voor meer besturingselementen.

$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

In de volgende sectie geeft u de waarden op die u in de keuzelijst wilt weergeven voor gebruikers.

Notitie

Met de keuzelijst die met dit script is gemaakt, kan slechts één selectie worden geselecteerd. Als u een keuzelijstbesturingselement wilt maken dat meerdere selecties toestaat, geeft u een waarde op voor de eigenschap SelectionMode, vergelijkbaar met het volgende: $listBox.SelectionMode = 'MultiExtended' Zie Keuzelijsten met meerdere keuzemogelijkheden voor meer informatie.

[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')

Voeg het besturingselement keuzelijst toe aan uw formulier en geef Windows opdracht om het formulier boven andere vensters en dialoogvensters te openen wanneer het wordt geopend.

$form.Controls.Add($listBox)
$form.Topmost = $true

Voeg de volgende regel code toe om het formulier weer te geven in Windows.

$result = $form.ShowDialog()

Ten slotte geeft de code in het if-blok Windows opdracht wat er met het formulier moet worden gedaan nadat gebruikers een optie in de keuzelijst hebben geselecteerd en klik vervolgens op de knop OK of druk op Enter.

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

Zie ook