Udostępnij za pomocą


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 CenterScreen w poprzednim skrypcie. Jeśli ta właściwość nie zostanie dodana, system Windows wybierze lokalizację po otwarciu formularza. Ustawiając StartingPosition 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 znajduje się 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 informacji o kontrolkach, zobacz System.Windows.Forms Namespace.

$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 if instruuje system Windows, co zrobić z formularzem po tym, jak użytkownicy wprowadzą tekst w polu tekstowym, a następnie klikną przycisk OK lub nacisną klawisz Enter.

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

Zobacz też