共用方式為


從清單框選取專案

此範例僅適用於 Windows 平臺。

使用 Windows PowerShell 3.0 和更新版本來建立對話框,讓使用者從清單框控件選取專案。

建立清單框控件,並從中選取專案

複製下列內容,然後將下列內容貼到 Windows PowerShell ISE 中,然後將它儲存為 PowerShell 腳本 (.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
}

腳本一開始會載入兩個 .NET Framework 類別: System.DrawingSystem.Windows.Forms。 然後,您會啟動 .NET Framework 類別 System.Windows.Forms.Form 的新實例。 這會提供您可以開始新增控制件的空白表單或視窗。

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

建立 Form 類別的實體之後,請將值指派給這個類別的三個屬性。

  • Text (文字)。 這會成為視窗的標題。
  • 大小。 這是表單的大小,以像素為單位。 上述腳本會建立寬度為 300 像素的表單,高度為 200 像素。
  • StartingPosition。 在上述腳本中,這個選擇性屬性會設定為 CenterScreen 。 如果您未新增此屬性,Windows 會在開啟表單時選取位置。 藉由將 StartingPosition 設定為 CenterScreen,您就會在每次載入時自動在畫面中間顯示表單。
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

接下來,建立表單的 [確定] 按鈕。 指定 [確定] 按鈕的大小和行為。 在此範例中,按鈕位置距離窗體的上邊緣為120圖元,而左邊緣則為75圖元。 按鈕高度為 23 像素,而按鈕長度為 75 像素。 腳本會使用預先定義的 Windows Forms 類型來判斷按鈕行為。

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

同樣地,您會建立 [取消] 按鈕。 [ 取消 ] 按鈕距離頂端為 120 像素,但距離視窗左邊緣 150 像素。

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

新增控制件 (在此案例中為清單框),讓使用者提供標籤文字中所描述的資訊。 除了清單框之外,您還可以套用許多其他控制項:如需更多控件,請參閱 System.Windows.Forms 命名空間

$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

在下一節中,您會指定清單框要向用戶顯示的值。

注意

此文稿所建立的清單框只允許一個選取專案。 若要建立允許多重選取的清單框控件,請指定 SelectionMode 屬性的值,類似下列內容:$listBox.SelectionMode = 'MultiExtended' 如需詳細資訊,請參閱 多重選取清單框

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

將清單框控件新增至窗體,並指示 Windows 在開啟其他視窗和對話框時開啟表單。

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

新增下列程式代碼行,以在 Windows 中顯示表單。

$result = $form.ShowDialog()

最後,If 區塊內的程式代碼會指示 Windows 在使用者從清單框中選取選項之後,對窗體執行什麼動作,然後按兩下 [確定] 按鈕或按 Enter 鍵。

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

另請參閱