Share via


사용자 지정 입력 상자 만들기

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

Windows PowerShell 3.0 이상 릴리스에서 Microsoft .NET Framework 양식 빌드 기능을 사용하여 그래픽 사용자 지정 입력란을 스크립팅합니다.

사용자 지정 그래픽 입력란 만들기

다음을 복사하여 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 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
}

스크립트는 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.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 enter the information in the space below:'
$form.Controls.Add($label)

사용자가 레이블 텍스트에 설명한 정보를 제공할 수 있는 컨트롤(이 경우 텍스트 상자)을 추가합니다. 텍스트 상자 외에도 적용할 수 있는 다른 많은 컨트롤이 있습니다. 컨트롤에 대한 자세한 내용은 System.Windows.Forms 네임스페이스를 참조하세요.

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

맨 위 속성을 $true 설정하여 창이 열려 있는 다른 창과 대화 상자 위에서 강제로 열립니다.

$form.Topmost = $true

다음으로 이 코드 줄을 추가하여 양식을 활성화하고 만든 텍스트 상자에 포커스를 설정합니다.

$form.Add_Shown({$textBox.Select()})

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

$result = $form.ShowDialog()

마지막으로 If 블록 내의 코드는 사용자가 텍스트 상자에 텍스트를 제공한 후 확인 단추를 클릭 하거나 Enter 키를 누른 후 폼으로 수행할 작업을 Windows에 지시합니다.

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

참고 항목