Items selecteren in een keuzelijstSelecting Items from a List Box

Gebruik Windows PowerShell 3.0 en latere versies te maken van een dialoogvenster waarmee gebruikers kunnen selecteren van items uit een keuzelijst.Use Windows PowerShell 3.0 and later releases to create a dialog box that lets users select items from a list box control.

Maken van een keuzelijstbesturingselement en items selecterenCreate a list box control, and select items from it

Kopieer en plak het volgende in Windows PowerShell ISE en vervolgens opslaan als een Windows PowerShell-script (.ps1).Copy and then paste the following into Windows PowerShell ISE, and then save it as a Windows PowerShell script (.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 klassen van .NET Framework: System.Drawing en System.Windows.Forms.The script begins by loading two .NET Framework classes: System.Drawing and System.Windows.Forms. Vervolgens start u een nieuw exemplaar van de .NET Framework-klasse System.Windows.Forms.Form; die zorgt voor een leeg formulier of besturingselementen venster waarnaar u kunt starten toe te voegen.You then start a new instance of the .NET Framework class System.Windows.Forms.Form; that provides a blank form or window to which you can start adding controls.

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

Nadat u een exemplaar van de klasse van het formulier hebt gemaakt, kunt u de waarden toewijzen aan drie eigenschappen van deze klasse.After you create an instance of the Form class, assign values to three properties of this class.

  • De tekst.Text. Dit wordt de titel van het venster.This becomes the title of the window.

  • Size.Size. Dit is de grootte van het formulier in pixels.This is the size of the form, in pixels. Dit script maakt een formulier 300 pixels breed door 200 pixels hoog.The preceding script creates a form that’s 300 pixels wide by 200 pixels tall.

  • StartingPosition.StartingPosition. Deze optionele eigenschap is ingesteld op CenterScreen in het voorgaande script.This optional property is set to CenterScreen in the preceding script. Als u deze eigenschap niet toevoegt, wordt een locatie geselecteerd wanneer het formulier wordt geopend.If you don’t add this property, Windows selects a location when the form is opened. Door in te stellen de StartingPosition naar CenterScreen, u automatisch weergeeft het formulier in het midden van het scherm elke keer dat wordt geladen.By setting the StartingPosition to CenterScreen, you’re automatically displaying the form in the middle of the screen each time it loads.

$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Maak vervolgens een OK knop voor het formulier.Next, create an OK button for your form. Geef de grootte en het gedrag van de OK knop.Specify the size and behavior of the OK button. In dit voorbeeld is de knop positie 120 pixels vanaf de bovenkant van het formulier en 75 pixels van de linkerrand.In this example, the button position is 120 pixels from the form’s top edge, and 75 pixels from the left edge. De hoogte van de knop wordt 23 pixels wanneer de lengte van de knop 75 pixels.The button height is 23 pixels, while the button length is 75 pixels. Het script maakt gebruik van vooraf gedefinieerde Windows Forms-typen om te bepalen het gedrag van de knop.The script uses predefined Windows Forms types to determine the button behaviors.

$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 deze manier maakt u een annuleren knop.Similarly, you create a Cancel button. De annuleren knop is 120 pixels vanaf de bovenkant, maar 150 pixels vanaf de linkerkant van het venster.The Cancel button is 120 pixels from the top, but 150 pixels from the left edge of the window.

$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 uw venster dat wordt beschreven welke informatie die u wilt dat gebruikers om te bieden.Next, provide label text on your window that describes the information you want users to provide. In dit geval wilt u dat gebruikers een computer selecteren.In this case, you want users to select a computer.

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

Het besturingselement (in dit geval een keuzelijst) waarmee gebruikers de informatie die u hebt dat wordt beschreven in de labeltekst toevoegen.Add the control (in this case, a list box) that lets users provide the information you’ve described in your label text. Er zijn veel andere besturingselementen die u naast keuzelijsten toepassen kunt. Zie voor meer besturingselementen System.Windows.Forms Namespace op MSDN.There are many other controls you can apply besides list boxes; for more controls, see System.Windows.Forms Namespace on MSDN.

$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 die u wilt dat de keuzelijst met invoervak aan gebruikers wilt weergeven.In the next section, you specify the values you want the list box to display to users.

Notitie

De keuzelijst met invoervak gemaakt met dit script kan slechts één selectie.The list box created by this script allows only one selection. Voor het maken van een keuzelijstbesturingselement waarmee meerdere selecties een waarde opgeven voor de SelectionMode -eigenschap op dezelfde manier als volgt: $listBox.SelectionMode = 'MultiExtended'.To create a list box control that allows multiple selections, specify a value for the SelectionMode property, similarly to the following: $listBox.SelectionMode = 'MultiExtended'. Zie voor meer informatie meervoudige selectie keuzelijsten.For more information, see Multiple-selection List Boxes.

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

Het besturingselement keuzelijst toevoegen aan uw formulier en door middel van het formulier op andere vensters en dialoogvensters openen wanneer deze wordt geopend.Add the list box control to your form, and instruct Windows to open the form atop other windows and dialog boxes when it’s opened.

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

Voeg de volgende regel code om het formulier in Windows weer te geven.Add the following line of code to display the form in Windows.

$result = $form.ShowDialog()

Ten slotte de code in de als blok geeft Windows opdracht wat te doen met het formulier wanneer gebruikers een optie in de lijst selecteren en klik vervolgens op de OK of drukt u op de Entersleutel.Finally, the code inside the If block instructs Windows what to do with the form after users select an option from the list box, and then click the OK button or press the Enter key.

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

Zie ookSee Also