Поделиться через


Создание графического элемента управления "Выбор даты"

Этот пример применяется только к платформам 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
}

В этом примере четырем свойствам этого класса присваиваются значения с помощью свойства Свойство и хэш-таблицы.

  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, что следует делать с формой, когда пользователь выберет день в календаре и нажмет кнопку ОК или клавишу ВВОД. Windows PowerShell отображает выбранную дату для пользователей.

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

См. также