Share via


다중 선택 목록 상자

이 샘플은 Windows 플랫폼에만 적용됩니다.

Windows PowerShell 3.0 이상 릴리스를 사용하여 사용자 지정 Windows Form에서 다중 선택 목록 상자 컨트롤을 만듭니다.

여러 항목을 선택할 수 있는 목록 상자 컨트롤 만들기

다음을 복사하여 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 = '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 make a selection from the list below:'
$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.SelectionMode = 'MultiExtended'

[void] $listBox.Items.Add('Item 1')
[void] $listBox.Items.Add('Item 2')
[void] $listBox.Items.Add('Item 3')
[void] $listBox.Items.Add('Item 4')
[void] $listBox.Items.Add('Item 5')

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

$result = $form.ShowDialog()

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

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

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

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

  • 텍스트. 창의 제목이 됩니다.
  • 크기. 폼의 크기(픽셀)입니다. 앞의 스크립트는 너비가 300픽셀 x 200픽셀인 폼을 만듭니다.
  • StartingPosition. 이 선택적 속성은 이전 스크립트에서 CenterScreen으로 설정됩니다. 이 속성을 추가하지 않으면 양식을 열 때 위치가 자동으로 선택됩니다. StartingPositionCenterScreen으로 설정하면 로드할 때마다 화면 중간에 양식이 자동으로 표시됩니다.
$form.Text = 'Data Entry Form'
$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.Size(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 make a selection from the list below:'
$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.SelectionMode = 'MultiExtended'

다음 섹션에서는 목록 상자가 사용자에게 표시할 값을 지정합니다.

[void] $listBox.Items.Add('Item 1')
[void] $listBox.Items.Add('Item 2')
[void] $listBox.Items.Add('Item 3')
[void] $listBox.Items.Add('Item 4')
[void] $listBox.Items.Add('Item 5')

목록 상자 컨트롤의 최대 높이를 지정합니다.

$listBox.Height = 70

폼에 목록 상자 컨트롤을 추가하고, 폼을 열 때 다른 창과 대화 상자 위에 폼을 열도록 Windows에 지시합니다.

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

다음 코드 줄을 추가하여 Windows에서 양식을 표시합니다.

$result = $form.ShowDialog()

마지막으로 if 블록 내의 코드는 사용자가 목록 상자에서 하나 이상의 옵션을 선택한 다음 확인 단추를 클릭하거나 Enter 키를 누를 때 양식으로 수행할 작업을 지시합니다.

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

참고 항목