Wybieranie elementów w polu listySelecting Items from a List Box

Aby utworzyć okno dialogowe, które umożliwia użytkownikom wybór elementów z pole listy, użyj programu Windows PowerShell 3.0 i nowszych wersjach.Use Windows PowerShell 3.0 and later releases to create a dialog box that lets users select items from a list box control.

Utwórz pole listy, a następnie wybierz elementy z niegoCreate a list box control, and select items from it

Skopiuj i następnie wklej następujący kod do programu Windows PowerShell ISE, a następnie zapisz go jako skrypt programu Windows PowerShell (ps1).Copy and then paste the following into Windows PowerShell ISE, and then save it as a 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
}

Skrypt, który rozpoczyna się od ładowania dwie klasy .NET Framework: System.Drawing i System.Windows.Forms.The script begins by loading two .NET Framework classes: System.Drawing and System.Windows.Forms. Następnie należy uruchomić nowe wystąpienie klasy .NET Framework klasie System.Windows.Forms.Form; zapewnia pustego formularza lub okna, do którego można rozpocząć dodawanie kontrolki.You then start a new instance of the .NET Framework class System.Windows.Forms.Form; that provides a blank form or window to which you can start adding controls.

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

Po utworzeniu wystąpienia klasy formularza należy przypisać wartości do trzech właściwości tej klasy.After you create an instance of the Form class, assign values to three properties of this class.

  • tekst.Text. To jest tytuł okna.This becomes the title of the window.

  • Rozmiar.Size. Jest to rozmiar w postaci, w pikselach.This is the size of the form, in pixels. Powyższy skrypt tworzy formularz, który jest 300 pikseli szerokości i wysokości 200 pikseli.The preceding script creates a form that’s 300 pixels wide by 200 pixels tall.

  • StartingPosition.StartingPosition. Ta opcjonalna właściwość jest ustawiona na CenterScreen w powyższy skrypt.This optional property is set to CenterScreen in the preceding script. Jeśli nie dodasz tej właściwości, system Windows wybiera lokalizację po otwarciu formularza.If you don’t add this property, Windows selects a location when the form is opened. Przez ustawienie StartingPosition do CenterScreen, automatycznie wyświetlasz formularza w środku ekranu zawsze ładuje.By setting the StartingPosition to CenterScreen, you’re automatically displaying the form in the middle of the screen each time it loads.

$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Następnie należy utworzyć OK przycisk w formularzu.Next, create an OK button for your form. Określ rozmiar i zachowanie OK przycisku.Specify the size and behavior of the OK button. W tym przykładzie położenie przycisku jest 120 pikseli od górnej krawędzi formularza i 75 pikseli od lewej krawędzi.In this example, the button position is 120 pixels from the form’s top edge, and 75 pixels from the left edge. Wysokość przycisku jest 23 pikseli, gdy długość przycisk 75 pikseli.The button height is 23 pixels, while the button length is 75 pixels. Skrypt używa wstępnie zdefiniowanych typów formularzy systemu Windows w celu określenia zachowania przycisku.The script uses predefined Windows Forms types to determine the button behaviors.

$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 można utworzyć anulować przycisku.Similarly, you create a Cancel button. Anulować przycisk jest 120 pikseli od góry, ale 150 pikseli od lewej krawędzi okna.The Cancel button is 120 pixels from the top, but 150 pixels from the left edge of the window.

$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 zawierają tekst etykiety opisujący informacje, które chcesz użytkowników w celu zapewnienia okna.Next, provide label text on your window that describes the information you want users to provide. W takim przypadku ma użytkowników, aby wybrać komputer.In this case, you want users to select a computer.

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

Dodawanie formantu (w tym przypadku pole listy), który umożliwia użytkownikom, podaj informacje, które zostały opisane w tekście etykiety.Add the control (in this case, a list box) that lets users provide the information you’ve described in your label text. Istnieje wiele formantów, które można zastosować poza listy pól. Aby uzyskać więcej opcji, zobacz Namespace elementu System.Windows.Forms w witrynie MSDN.There are many other controls you can apply besides list boxes; for more controls, see System.Windows.Forms Namespace on MSDN.

$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

W następnej sekcji można określić wartości ma pole listy do wyświetlenia użytkownikom.In the next section, you specify the values you want the list box to display to users.

Uwaga

Pole listy utworzone przez ten skrypt umożliwia wybór tylko jeden.The list box created by this script allows only one selection. Aby utworzyć pole listy, który umożliwia wielokrotny, określ wartość SelectionMode właściwości, podobnie do następującego: $listBox.SelectionMode = 'MultiExtended'.To create a list box control that allows multiple selections, specify a value for the SelectionMode property, similarly to the following: $listBox.SelectionMode = 'MultiExtended'. Aby uzyskać więcej informacji, zobacz pola listy wielokrotnego wyboru.For more information, see Multiple-selection List Boxes.

[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')

Dodawanie do formularza pole listy oraz poinstruuj systemu Windows, aby otworzyć formularz nad innych oknach i oknach dialogowych, gdy zostanie otwarta.Add the list box control to your form, and instruct Windows to open the form atop other windows and dialog boxes when it’s opened.

$form.Controls.Add($listBox)
$form.Topmost = $true

Dodaj następujący wiersz kodu do wyświetlania formularza w systemie Windows.Add the following line of code to display the form in Windows.

$result = $form.ShowDialog()

Na koniec kodu wewnątrz Jeśli bloku instruuje system Windows, co należy zrobić z formularza po użytkowników wybierz opcję w polu listy, a następnie kliknij przycisk OK przycisk lub naciśnij przycisk Enterklucza.Finally, the code inside the If block instructs Windows what to do with the form after users select an option from the list box, and then click the OK button or press the Enter key.

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

Zobacz teżSee Also