Een aangepast invoervak maken

Dit voorbeeld is alleen van toepassing op Windows-platforms.

Script een grafisch aangepast invoervak met microsoft .NET Framework-functies voor het bouwen van formulieren in Windows PowerShell 3.0 en hoger.

Een aangepast, grafisch invoervak maken

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 = 'Data Entry Form'
$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 enter the information in the space below:'
$form.Controls.Add($label)

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)

$form.Topmost = $true

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

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

$form = New-Object System.Windows.Forms.Form

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 = 'Data Entry Form'
$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.

$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 enter the information in the space below:'
$form.Controls.Add($label)

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

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)

Stel de eigenschap Topmost in op $true om te forceren dat het venster boven op andere geopende vensters en dialoogvensters wordt geopend.

$form.Topmost = $true

Voeg vervolgens deze regel code toe om het formulier te activeren en stel de focus in op het tekstvak dat u hebt gemaakt.

$form.Add_Shown({$textBox.Select()})

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 tekst in het tekstvak hebben opgegeven en klik vervolgens op de knop OK of druk op Enter.

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

Zie ook