Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот пример применяется только к платформам Windows.
Используйте Windows PowerShell 3.0 и более поздние выпуски для создания диалогового окна, позволяющего пользователям выбирать элементы из элемента управления списком.
Создание элемента управления "Список" и выбор элементов из него
Скопируйте и вставьте следующий текст в Windows PowerShell ISE, а затем сохраните его как файл скрипта PowerShell (.ps1
).
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please select a computer:'
$form.Controls.Add($label)
$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,20)
$listBox.Height = 80
[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')
$form.Controls.Add($listBox)
$form.Topmost = $true
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $listBox.SelectedItem
$x
}
Скрипт начинается с загрузки двух классов .NET Framework: System.Drawing и System.Windows.Forms. Затем вы запустите новый экземпляр класса .NET Framework System.Windows.Forms.Form. Это предоставляет пустую форму или окно, в которое можно приступить к добавлению элементов управления.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
После создания экземпляра класса Form назначьте значения трем свойствам этого класса.
- Текст. Это становится заголовком окна.
- Размер. Это размер формы в пикселях. Предыдущий сценарий создает форму, которая имеет ширину 300 пикселей на 200 пикселей.
- Начальная позиция. Это необязательное свойство имеет значение CenterScreen в предыдущем сценарии. Если вы не добавите это свойство, Windows выбирает расположение при открытии формы. Установив начальной позиции на CenterScreen, вы автоматически отображаете форму в середине экрана каждый раз при её загрузке.
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
Затем создайте кнопку OK для формы. Укажите размер и поведение кнопки OK. В этом примере положение кнопки составляет 120 пикселей от верхнего края формы и 75 пикселей с левого края. Высота кнопки составляет 23 пикселя, а длина кнопки составляет 75 пикселей. Сценарий использует стандартные типы Windows Forms для определения поведения кнопки.
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
Аналогичным образом вы создадите кнопку Отмена. Кнопка отмены составляет 120 пикселей сверху, но 150 пикселей с левого края окна.
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
Затем укажите текст метки в окне, описывающий сведения, которые нужно предоставить пользователям. В этом случае необходимо, чтобы пользователи выбрали компьютер.
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please select a computer:'
$form.Controls.Add($label)
Добавьте элемент управления (в данном случае поле списка), которое позволяет пользователям предоставлять сведения, описанные в тексте метки. Существует множество других элементов управления, которые можно применить помимо полей со списком. Для получения дополнительной информации об элементах управления см. пространства имен System.Windows.Forms.
$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,20)
$listBox.Height = 80
В следующем разделе вы укажете значения, которые нужно отобразить в списке для пользователей.
Примечание.
Поле списка, созданное этим скриптом, разрешает только один выбор. Чтобы создать элемент управления списком, позволяющий выбрать несколько вариантов, укажите значение для свойства SelectionMode, аналогично следующему: $listBox.SelectionMode = 'MultiExtended'
. Для получения дополнительной информации см. Поля со многими вариантами выбора.
[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')
Добавьте элемент управления списка в форму и настройте Windows, чтобы она открывала форму поверх других окон и диалоговых окон при открытии.
$form.Controls.Add($listBox)
$form.Topmost = $true
Добавьте следующую строку кода для отображения формы в Windows.
$result = $form.ShowDialog()
Наконец, код внутри блока if
указывает Windows, что делать с формой после выбора пользователей параметра из списка, а затем нажмите кнопку ОК или нажмите клавишу ВВОД .
if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
$x = $listBox.SelectedItem
$x
}
См. также
PowerShell