建立圖形化日期選擇器
此範例僅適用於 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.Drawing 和 System.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 屬性和哈希表,將值指派給這個類別的四個屬性。
StartPosition:如果您未新增此屬性,Windows 會在開啟表單時選取位置。 藉由將此屬性設定為 CenterScreen,您就會在每次載入時,自動在畫面中間顯示表單。
大小:這是窗體的大小,以像素為單位。 上述腳本會建立 243 像素寬 230 像素的表單。
文字:這會成為視窗的標題。
最上層:藉由將此屬性設定為
$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())"
}