Создание настраиваемого поля ввода
Этот пример применяется только к платформам Windows.
Скрипт графического пользовательского поля ввода с помощью функций создания форм Microsoft платформа .NET Framework в Windows PowerShell 3.0 и более поздних выпусках.
Создание настраиваемого графического поля ввода
Скопируйте и вставьте следующую команду в интегрированную среда сценариев Windows PowerShell, а затем сохраните ее в виде файла скрипта PowerShell..ps1
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$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 enter the information in the space below:'
$form.Controls.Add($label)
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
$form.Topmost = $true
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $textBox.Text
$x
}
Сценарий начинается с загрузки двух классов .NET Framework: System.Drawing и System.Windows.Forms. Затем вы запустите новый экземпляр класса платформа .NET Framework System.Windows.Forms.Form. Это предоставляет пустую форму или окно, в которое можно приступить к добавлению элементов управления.
$form = New-Object System.Windows.Forms.Form
После создания экземпляра класса "Форма" назначьте значения для трех свойств этого класса.
- Текст. Это будет заголовком окна.
- Размер. Это размер формы в пикселях. Предыдущий сценарий создает форму шириной 300 пикселей и высотой 200 пикселей.
- StartingPosition. Для этого дополнительного свойства задается значение CenterScreen в предыдущем сценарии. Если это свойство не добавлено, Windows выберет расположение после открытия формы. Если для StartingPosition задать значение CenterScreen, форма будет автоматически отображаться в центре экрана при загрузке.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
Далее создайте кнопку OК для формы. Укажите размер и поведение кнопки ОК. В этом примере кнопка расположена на 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 enter the information in the space below:'
$form.Controls.Add($label)
Добавьте элемент управления (в данном случае текстовое поле), который позволит пользователям указать сведения, описанные в тексте метки. Кроме текстовых полей можно применить множество других элементов управления. Дополнительные элементы управления см. в разделе "Пространство имен System.Windows.Forms".
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
Задайте для свойства Topmost значение $true, чтобы принудительно открыть окно поверх других диалоговых окон.
$form.Topmost = $true
Затем добавьте следующую строку кода, чтобы активировать форму и установить фокус на текстовое поле, которое вы создали.
$form.Add_Shown({$textBox.Select()})
Добавьте следующую строку кода для отображения формы в Windows.
$result = $form.ShowDialog()
Наконец, код внутри блока If указывает Windows, что следует делать с формой после того, как пользователь задаст текст в поле и нажмет кнопку ОК или клавишу ВВОД.
if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
$x = $textBox.Text
$x
}
См. также
- GitHub: Дэйв Wyatt WinFormsExample Обновления)
- Windows PowerShell Tip of the Week: Creating a Custom Input Box (Совет недели для Windows PowerShell: создание настраиваемого поля ввода)
PowerShell