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 Windows.Forms.Form -Property @{
    StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
    Size          = New-Object Drawing.Size 243, 230
    Text          = 'Select a Date'
    Topmost       = $true
}

$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
    ShowTodayCircle   = $false
    MaxSelectionCount = 1
}
$form.Controls.Add($calendar)

$okButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 38, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'OK'
    DialogResult = [Windows.Forms.DialogResult]::OK
}
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

$cancelButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 113, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'Cancel'
    DialogResult = [Windows.Forms.DialogResult]::Cancel
}
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

$result = $form.ShowDialog()

if ($result -eq [Windows.Forms.DialogResult]::OK) {
    $date = $calendar.SelectionStart
    Write-Host "Date selected: $($date.ToShortDateString())"
}

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

$form = New-Object Windows.Forms.Form -Property @{
    StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
    Size          = New-Object Drawing.Size 243, 230
    Text          = 'Select a Date'
    Topmost       = $true
}

다음은 Property 속성과 해시 테이블을 사용하여 이 클래스의 네 가지 속성에 값을 할당하는 예제입니다.

  1. StartPosition: 이 속성을 추가하지 않으면 폼이 열릴 때 Windows에서 위치를 선택합니다. 이 속성을 CenterScreen으로 설정하면 로드할 때마다 화면 가운데 양식이 자동으로 표시됩니다.

  2. 크기: 폼의 크기(픽셀)입니다. 앞의 스크립트는 너비가 243픽셀, 높이가 230픽셀인 폼을 만듭니다.

  3. 텍스트: 창의 제목이 됩니다.

  4. 맨 위: 이 속성을 $true설정하면 창이 열려 있는 다른 창과 대화 상자 위로 강제로 열 수 있습니다.

그런 다음 양식에 일정 컨트롤을 만든 다음 추가합니다. 이 예에서는 현재 날짜가 강조 표시되거나 원으로 표시되지 않습니다. 사용자는 달력에서 날짜를 한 번에 하나씩만 선택할 수 있습니다.

$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
    ShowTodayCircle   = $false
    MaxSelectionCount = 1
}
$form.Controls.Add($calendar)

다음으로 양식에 대한 확인 단추를 만듭니다. 확인 단추의 크기와 동작을 지정합니다. 이 예제에서는 단추가 양식의 위쪽 가장자리에서 165픽셀, 왼쪽 가장자리에서 38픽셀 위치에 배치됩니다. 단추 높이는 23픽셀이고 단추 길이는 75픽셀입니다. 스크립트는 미리 정의된 Windows Forms 형식을 사용하여 단추 동작을 결정합니다.

$okButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 38, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'OK'
    DialogResult = [Windows.Forms.DialogResult]::OK
}
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

마찬가지로 취소 단추를 만듭니다. 취소 단추는 위쪽에서 165픽셀, 창의 왼쪽 가장자리에서 113픽셀 위치에 있습니다.

$cancelButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 113, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'Cancel'
    DialogResult = [Windows.Forms.DialogResult]::Cancel
}
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

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

$result = $form.ShowDialog()

마지막으로, 블록 내의 if 코드는 사용자가 일정에서 하루를 선택한 후 확인 단추를 클릭 하거나 Enter 키를 누른 후 양식으로 수행할 작업을 Windows에 지시합니다. Windows PowerShell에 선택된 날짜가 표시됩니다.

if ($result -eq [Windows.Forms.DialogResult]::OK) {
    $date = $calendar.SelectionStart
    Write-Host "Date selected: $($date.ToShortDateString())"
}

참고 항목