Dela via


Skapa en anpassad indataruta

Det här exemplet gäller endast för Windows-plattformar.

Skapa en grafisk anpassad indataruta med hjälp av formulärskapandefunktionerna i Microsoft .NET Framework i Windows PowerShell 3.0 och senare versioner.

Skapa en anpassad, grafisk indataruta

Kopiera och klistra sedan in följande i Windows PowerShell ISE och spara det sedan som en PowerShell-skriptfil (.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
}

Skriptet börjar med att läsa in två .NET Framework-klasser: System.Drawing och System.Windows.Forms. Sedan startar du en ny instans av .NET Framework-klassen System.Windows.Forms.Form. Det ger ett tomt formulär eller fönster där du kan börja lägga till kontroller.

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

När du har skapat en instans av klassen Formulär tilldelar du värden till tre egenskaper för den här klassen.

  • Text. Detta blir fönstrets rubrik.
  • Storlek. Det här är storleken på formuläret i bildpunkter. Föregående skript skapar ett formulär som är 300 bildpunkter brett och 200 bildpunkter högt.
  • StartingPosition. Den här valfria egenskapen är inställd på CenterScreen i föregående skript. Om du inte lägger till den här egenskapen väljer Windows en plats när formuläret öppnas. Genom att ange StartingPosition till CenterScreen visar du automatiskt formuläret mitt på skärmen varje gång det läses in.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Skapa sedan en OK-knapp för formuläret. Ange storlek och beteende för OK-knappen . I det här exemplet är knapppositionen 120 bildpunkter från formulärets övre kant och 75 bildpunkter från den vänstra kanten. Knapphöjden är 23 bildpunkter, medan knapplängden är 75 bildpunkter. Skriptet använder fördefinierade Windows Forms-typer för att fastställa knappbeteenden.

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

På samma sätt skapar du en avbryt-knapp . Knappen Avbryt är 120 bildpunkter uppifrån, men 150 bildpunkter från fönstrets vänstra kant.

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

Ange sedan etiketttext i fönstret som beskriver den information som du vill att användarna ska tillhandahålla.

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

Lägg till kontrollen (i det här fallet en textruta) som låter användarna ange den information som du har beskrivit i etiketttexten. Det finns många andra kontroller som du kan använda förutom textrutor. Fler kontroller finns i System.Windows.Forms Namnområde.

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

Ange egenskapen Översta till $true för att tvinga fönstret att öppna ovanpå andra öppna fönster och dialogrutor.

$form.Topmost = $true

Lägg sedan till den här kodraden för att aktivera formuläret och ange fokus till textrutan som du skapade.

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

Lägg till följande kodrad för att visa formuläret i Windows.

$result = $form.ShowDialog()

Slutligen instruerar koden i Om-blocket Windows vad du ska göra med formuläret när användarna har angett text i textrutan och klickar sedan på OK-knappen eller trycker på Retur .

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

Se även