Share via


목록 상자에서 항목 선택

이 샘플은 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
}

스크립트는 System.Drawing 및 System.Windows.Forms라는 두 개의 .NET Framework 클래스를 로드하여 시작합니다. 그런 다음 .NET Framework 클래스 System.Windows.Forms.Form의 새 인스턴스를 시작합니다. 그러면 컨트롤을 추가할 수 있는 빈 양식 또는 창이 제공됩니다.

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

Form 클래스의 인스턴스를 만든 후 이 클래스의 세 속성에 값을 할당합니다.

  • 텍스트. 창의 제목이 됩니다.
  • 크기. 폼의 크기(픽셀)입니다. 앞의 스크립트는 너비가 300픽셀 x 200픽셀인 폼을 만듭니다.
  • StartingPosition. 이 선택적 속성은 이전 스크립트에서 CenterScreen으로 설정됩니다. 이 속성을 추가하지 않으면 양식을 열 때 위치가 자동으로 선택됩니다. StartingPositionCenterScreen으로 설정하면 로드할 때마다 화면 중간에 양식이 자동으로 표시됩니다.
$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 블록 내의 코드는 사용자가 목록 상자에서 옵션을 선택한 후 확인 단추를 클릭하거나 Enter 키를 누른 후 폼으로 수행할 작업을 Windows에 지시합니다.

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

참고 항목