Items selecteren in een keuzelijst
Gebruik Windows PowerShell 3.0 en latere releases om een dialoogvenster te maken waarmee gebruikers items uit een keuzelijstbesturingselement kunnen selecteren.
Een keuzelijstbesturingselement maken en er items uit selecteren
Kopieer en plak het volgende in Windows PowerShell ISE en sla het vervolgens op als 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 .NET Framework klassen: System.Drawing en System.Windows. Formulieren. Vervolgens start u een nieuw exemplaar van de .NET Framework klasse System.Windows. Forms.Form; dat een leeg formulier of venster bevat waaraan u besturingselementen kunt toevoegen.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
Nadat u een exemplaar van de klasse Form hebt maken, 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. Met het voorgaande script maakt u een formulier van 300 pixels breed bij 200 pixels lang.
StartingPosition. Deze optionele eigenschap wordt in het voorgaande script ingesteld op CenterScreen. Als u deze eigenschap niet toevoegt, selecteert Windows een locatie wanneer het formulier wordt geopend. Door StartingPosition in te stellen op CenterScreen, wordt het formulier automatisch weergegeven in het midden van het scherm 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 positie van de knop 120 pixels van de bovenrand van het formulier en 75 pixels vanaf de linkerrand. De hoogte van de knop is 23 pixels, terwijl de lengte van de knop 75 pixels is. Het script maakt gebruik van vooraf gedefinieerde Windows formuliertypen 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 met de informatie die gebruikers moeten verstrekken. 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 lijstvak) toe waarmee gebruikers de informatie kunnen verstrekken die u in uw labeltekst hebt beschreven. Er zijn veel andere besturingselementen die u naast de lijstvakken kunt toepassen; Zie System.Windows voor meer besturingselementen. Formuliernaamruimte.
$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 in het lijstvak moeten worden weergegeven voor gebruikers.
Notitie
In het keuzelijstje dat door dit script is gemaakt, is slechts één selectie mogelijk. Als u een keuzelijstbesturingselement wilt maken dat meerdere selecties toestaat, geeft u een waarde op voor de eigenschap SelectionMode, vergelijkbaar met de volgende: $listBox.SelectionMode = 'MultiExtended' . Zie Multiple-selection List Boxes (Keuzelijst met meerdere selecties) 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 Voor de lijst toe aan uw formulier en instrueren Windows het formulier te openen op andere vensters en dialoogvensters wanneer het wordt geopend.
$form.Controls.Add($listBox)
$form.Topmost = $true
Voeg de volgende coderegel toe om het formulier weer te geven in Windows.
$result = $form.ShowDialog()
Ten slotte geeft de code in het blok Indien aan Windows wat er met het formulier moet worden gebeurd nadat gebruikers een optie in het keuzelijstvak hebben geselecteerd en vervolgens op de knop OK klikken of op Enter drukken.
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $listBox.SelectedItem
$x
}