Tworzenie niestandardowego pola wejściowego

Ten przykład dotyczy tylko platform systemu Windows.

Tworzenie skryptu graficznego niestandardowego pola wejściowego przy użyciu funkcji tworzenia formularzy programu Microsoft .NET Framework w programie Windows PowerShell 3.0 i nowszych wersjach.

Tworzenie niestandardowego, graficznego pola wejściowego

Skopiuj i wklej następujący kod do środowiska Windows PowerShell ISE, a następnie zapisz go jako plik skryptu programu PowerShell (.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
}

Skrypt rozpoczyna się od załadowania dwóch klas programu .NET Framework: System.Drawing i System.Windows.Forms. Następnie uruchom nowe wystąpienie klasy .NET Framework System.Windows.Forms.Form. Zapewnia to pusty formularz lub okno, do którego można rozpocząć dodawanie kontrolek.

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

Po utworzeniu wystąpienia klasy Form przypisz wartości do trzech właściwości tej klasy.

  • Tekst. Staje się to tytułem okna.
  • Rozmiar. Jest to rozmiar formularza w pikselach. Powyższy skrypt tworzy formularz o szerokości 300 pikseli o wysokości 200 pikseli.
  • Pozycja początkowa. Ta opcjonalna właściwość jest ustawiona na Wartość CenterScreen w poprzednim skrygcie. Jeśli ta właściwość nie zostanie dodana, system Windows wybierze lokalizację po otwarciu formularza. Ustawiając ekran StartPosition na CenterScreen, automatycznie wyświetlasz formularz na środku ekranu za każdym razem, gdy zostanie załadowany.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Następnie utwórz przycisk OK dla formularza. Określ rozmiar i zachowanie przycisku OK . W tym przykładzie położenie przycisku wynosi 120 pikseli od górnej krawędzi formularza i 75 pikseli od lewej krawędzi. Wysokość przycisku wynosi 23 piksele, a długość przycisku wynosi 75 pikseli. Skrypt używa wstępnie zdefiniowanych typów formularzy systemu Windows do określania zachowań przycisków.

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

Podobnie utworzysz przycisk Anuluj . Przycisk Anuluj jest 120 pikseli od góry, ale 150 pikseli od lewej krawędzi okna.

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

Następnie podaj tekst etykiety w oknie, który opisuje informacje, które mają zostać podane przez użytkowników.

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

Dodaj kontrolkę (w tym przypadku pole tekstowe), które umożliwia użytkownikom podanie informacji opisanych w tekście etykiety. Istnieje wiele innych kontrolek, które można zastosować oprócz pól tekstowych. Aby uzyskać więcej kontrolek, zobacz System.Windows.Forms Namespace (Przestrzeń nazw System.Windows.Forms).

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

Ustaw właściwość Topmost na $true, aby wymusić otwarcie okna na szczycie innych otwartych okien i okien dialogowych.

$form.Topmost = $true

Następnie dodaj ten wiersz kodu, aby aktywować formularz, i ustaw fokus na utworzone pole tekstowe.

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

Dodaj następujący wiersz kodu, aby wyświetlić formularz w systemie Windows.

$result = $form.ShowDialog()

Na koniec kod wewnątrz bloku Jeśli nakazuje systemowi Windows, co zrobić z formularzem po podaniu tekstu przez użytkowników w polu tekstowym, a następnie kliknij przycisk OK lub naciśnij klawisz Enter.

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

Zobacz też