グラフィカルな日付の選択を作成する
このサンプルは 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())"
}
このスクリプトは 2 つの .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 プロパティとハッシュ テーブルを使って、このクラスの 4 つのプロパティに値を割り当てます。
StartPosition:このプロパティを追加しない場合は、Windows によりフォームが開かれる場所が選択されます。 このプロパティを CenterScreen に設定すると、フォームは読み込まれるたびに画面中央に自動的に表示されます。
Size:フォームのサイズをピクセル単位で表します。 前述のスクリプトにより、幅 243 ピクセル、高さ 230 ピクセルのフォームが作成されます。
Text:ウィンドウのタイトルになります。
Topmost:このプロパティを
$true
に設定すると、開いているその他のウィンドウとダイアログ ボックスの最上部にウィンドウが強制的に開きます。
次に、作成し、フォームに [カレンダー] コントロールを追加します。 この例では、現在の日付は強調表示されておらず、丸で囲まれてもいません。 ユーザーは、予定表で 1 回に 1 日のみ選択できます。
$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
ShowTodayCircle = $false
MaxSelectionCount = 1
}
$form.Controls.Add($calendar)
次に、フォームに [OK] ボタンを作成します。 [OK] ボタンのサイズと動作を指定します。 この例では、ボタンの位置は、フォームの上端から 165 ピクセル、左端から 38 ピクセルです。 ボタンの高さは 23 ピクセル、ボタンの幅は 75 ピクセルです。 スクリプトは、ボタンの動作を決定するために定義済みの Windows フォームの型を使用します。
$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
ブロック内のコードにより、ユーザーがカレンダーで日付を選んでから、[OK] ボタンをクリックするか Enter キーを押した後のフォームの操作を Windows に指示します。 Windows PowerShell は、ユーザーに選択された日付を表示します。
if ($result -eq [Windows.Forms.DialogResult]::OK) {
$date = $calendar.SelectionStart
Write-Host "Date selected: $($date.ToShortDateString())"
}
関連項目
PowerShell