![](/uploads/posts/2022-08/01.png)
Содержание статьи
В Windows PowerShell доступны два варианта создания GUI с помощью объектов .NET Framework. Классические элементы интерфейса Windows можно добавить с помощью библиотеки .NET Windows Forms (WinForms), которая поддерживалась в .NET c самого начала. Более современный вариант дизайна реализуется с помощью технологии Windows Presentation Foundation (WPF), которая была добавлена позже в .NET Framework 3.0.
Построение GUI с помощью Windows Forms
Давай создадим простейшую форму с надписью и кнопкой, выполняя команды непосредственно в консоли PowerShell.
Как мы знаем, платформа .NET построена таким образом, что для обращения к тем или иным объектам нужно предварительно загрузить в операционную память соответствующую сборку (assembly) — динамическую библиотеку определенного вида. Наиболее часто использующиеся сборки загружаются в PowerShell автоматически. Для обращения к объектам WinForms из PowerShell нужно сначала загрузить сборку, поддерживающую эти объекты:
PSC:\Users\andrv>Add-Type-AssemblynameSystem.Windows.Forms
Графический интерфейс в терминах WinForms — это набор элементов управления (кнопки, поля ввода, списки, флажки и т. д.), которые располагаются в контейнерах (формы, панели, вкладки). Изменяя значения свойств объектов, соответствующих элементам управления, мы определяем внешний вид этих элементов (размер, цвет фона, используемый шрифт и т. д.).
Любое графическое приложение WinForms должно иметь главную форму — объект типа Windows.
. Создадим нашу главную форму и сохраним соответствующий объект в переменной $form
:
PSC:\Users\andrv>$form=New-ObjectSystem.Windows.Forms.Form
Наша форма пока находится только в оперативной памяти, на экране мы ее не видим. Зададим заголовок формы (свойство Text
объекта $form
):
PSC:\Users\andrv>$form.Text=Первая форма
Поместим на форму надпись — для этого нужно создать объект типа System.
и присвоить значение свойству Text
этого объекта:
PSC:\Users\andrv>$label=New-ObjectSystem.Windows.Forms.Label
PSC:\Users\andrv>$label.Text=Привет!
Кроме надписи, на форму можно помещать другие элементы управления, которым соответствуют объекты из пространства имен System.
. Некоторые из этих объектов представлены в таблице ниже.
Объект | Описание |
---|---|
Button | Кнопка на форме. Надпись на кнопке задается свойством Text |
CheckBox | Флажок (чекбокс) — элемент управления для выбора одного или нескольких пунктов из предложенных вариантов |
CheckedListBox | Состоит из списка элементов (ListBox), перед каждым из которых помещен флажок (чекбокс) для возможности выбора |
ComboBox | Состоит из поля для ввода текста (TextBox) и связанного с ним раскрывающегося списка значений (ListBox) |
DataGridView | Основной элемент управления для представления табличных данных (поддерживает связь с базой данных) |
GroupBox | Используется для выделения групп элементов управления (чаще всего радиокнопок), возле которых отображается рамка |
ImageList | Контейнер для размещения коллекции изображений, используемых другими элементами управления (например, ListView и TreeView) |
ListBox | Список элементов, которые могут быть выбраны. Может содержать простой текст или объекты |
Panel | Видимый или невидимый контейнер для группировки элементов управления |
PictureBox | Используется для размещения графических изображений в нескольких стандартных форматах |
ProgressBar | Индикатор хода выполнения какого‑либо процесса |
RadioButton | Переключатель (радиокнопка) для выбора одного варианта из списка предложенных |
TextBox | Элемент для ввода текста в одной или нескольких строках |
TreeView | Отображение данных в виде узлов дерева |
Для задания размеров и расположения элементов управления используются объекты типа System.
, в которые передаются координаты: первая — по горизонтали, вторая — по вертикали (начало координат размещается в верхнем левом углу, ось X направлена вправо, ось Y — вниз). Нашу надпись мы сместим от верхнего левого угла на 20 пикселов вправо и 10 пикселов вниз. Объект с нужными координатами записывается в свойство Location
объекта $label
:
PSC:\Users\andrv>$label.Location=New-ObjectSystem.Drawing.Point20,10
Пока надпись представляет собой отдельный объект, который не связан с основной формой. Поместим надпись на форму, добавив объект $label
в коллекцию $form.
с помощью метода Add
:
PSC:\Users\andrv>$form.Controls.Add($label)
Теперь создадим кнопку (объект типа Windows.
) с надписью «Нажми!»:
PSC:\Users\andrv>$button=New-ObjectWindows.Forms.Button
PSC:\Users\andrv>$button.Text="Нажми!"
Зададим координаты для кнопки:
PSC:\Users\andrv>$button.Location=New-ObjectSystem.Drawing.Point20,40
Поместим кнопку на форму:
PSC:\Users\andrv>$form.Controls.Add($button)
Теперь добавим нашей форме функциональность — по нажатию кнопки $button
текст в надписи $labe
l будет меняться на «Пока!». Для этого с помощью метода Add_Click
нужно определить обработчик события Click
на кнопке. В этот метод передается блок кода, который будет выполнен при нажатии кнопки. В нашем случае достаточно изменить значение свойства $label.
PSC:\Users\andrv>$button.Add_Click({$label.Text=Пока!})
Если бы обработчик события был более объемный, то удобнее было бы заранее сохранить соответствующий блок кода в переменной, которую затем передать в метод Add_Click
.
Теперь с помощью метода ShowDialog
можно отобразить созданную форму с элементами управления на экране.
PSC:\Users\andrv>$form.ShowDialog()
![Форма, созданная в PowerShell Форма, созданная в PowerShell](/uploads/posts/2022-08/01.png)
По нажатию кнопки надпись на форме изменится.
![Изменения в элементе на форме Изменения в элементе на форме](/uploads/posts/2022-08/02.png)
Скачать:
Скриншоты:
Важно:
Все статьи и материал на сайте размещаются из свободных источников. Приносим свои глубочайшие извинения, если Ваша статья или материал была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.