Создание графического элемента управления "Выбор даты"
Этот пример применяется только к платформам Windows.
Используйте Windows PowerShell 3.0 и более поздние версии для создания формы с графическим элементом управления "Календарь", в котором пользователи могут выбрать день месяца.
Создание графического элемента "Выбор даты"
Скопируйте и вставьте следующую команду в интегрированную среда сценариев Windows PowerShell, а затем сохраните ее в виде файла скрипта 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
}
В этом примере четырем свойствам этого класса присваиваются значения с помощью свойства Свойство и хэш-таблицы.
StartPosition: Если вы не добавите это свойство, Windows выбирает расположение при открытии формы. Если для этого свойства задать значение CenterScreen, форма будет автоматически отображаться в центре экрана при загрузке.
Размер: это размер формы в пикселях. Предыдущий сценарий создает форму шириной 243 пикселя и высотой 230 пикселей.
Текст: это становится заголовком окна.
Сверху. Задав это свойство
$true
, можно принудительно открыть окно на вершине других открытых окон и диалоговых окон.
Далее создайте и добавьте элемент управления "Календарь" в форму. В этом примере текущий день не выделен или круг. Пользователи могут выбрать в календаре не больше одного дня за раз.
$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
ShowTodayCircle = $false
MaxSelectionCount = 1
}
$form.Controls.Add($calendar)
Далее создайте кнопку OК для формы. Укажите размер и поведение кнопки ОК. В этом примере кнопка расположена на 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, что следует делать с формой, когда пользователь выберет день в календаре и нажмет кнопку ОК или клавишу ВВОД. Windows PowerShell отображает выбранную дату для пользователей.
if ($result -eq [Windows.Forms.DialogResult]::OK) {
$date = $calendar.SelectionStart
Write-Host "Date selected: $($date.ToShortDateString())"
}
См. также
PowerShell