Delen via


Items selecteren in een keuzelijst

Dit voorbeeld is alleen van toepassing op Windows-platforms.

Gebruik Windows PowerShell-versie 3.0 en later om een dialoogvenster te maken waarmee gebruikers items kunnen selecteren uit een lijstvakbesturingselement.

Een keuzelijstbesturingselement maken en items eruit selecteren

Kopieer en plak het volgende in PowerShell ISE en sla het vervolgens op als een PowerShell-script (.ps1) bestand.

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 nieuwe instantie van de .NET Framework-klasse System.Windows.Forms.Form. Dit biedt een leeg formulier of venster waarop u kunt besturingselementen 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.
  • Startpositie. 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. Als u de StartingPosition instelt 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 OK-knop voor uw formulier. Geef de grootte en het gedrag van de OK-knop 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 met de tekst Annuleren. De Annuleren knop 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.

Opmerking

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 lijstvak toe aan uw formulier en instrueer Windows om het formulier bovenop 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 de opdracht wat u met het formulier moet doen 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