共用方式為


建立圖形化日期選擇器

此範例僅適用於 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())"
}

腳本一開始會載入兩個 .NET Framework 類別: System.DrawingSystem.Windows.Forms。 然後,您會啟動 .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 程式代碼會指示 Windows 在用戶選取行事曆上的一天之後,對窗體執行什麼動作,然後按兩下 [確定 ] 按鈕或按 Enter 鍵。 Windows PowerShell 會向使用者顯示選取的日期。

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

另請參閱