Создание графического интерфейса PowerShell (часть 8)

Опубликовано: 18 Марта, 2023

  • Создание графического интерфейса PowerShell (часть 13)

В моей предыдущей статье из этой серии я показал вам, как вывести список имен виртуальных машин в ответ на нажатие кнопки. Это доказывает, что форма может отображать динамические данные, но мы по-прежнему не делаем ничего полезного. Я по-прежнему планирую показать вам, как создать приложение с графическим интерфейсом, которое предоставляет полезную информацию, но прежде я хочу показать вам несколько приемов добавления визуального чутья к интерфейсу.

Давайте начнем с отображения вывода в текстовом поле. Как вы помните из предыдущей статьи, вывод формы печатается непосредственно на фоне формы. Вы можете увидеть, как это выглядит на рисунке A. Технически в этом нет ничего плохого, но мы можем отобразить вывод другими способами.

Изображение 4612
Рисунок A: вывод формы записывается в середине диалогового окна.

Отобразить список виртуальных машин в текстовом поле на удивление легко. Фактически, вы можете сделать это, изменив одно слово. Взгляните на функцию DisplayVMs, которая вызывает отображение списка виртуальных машин в ответ на нажатие кнопки:

Скрипт содержит строку, которая гласит:

Ранее эта строка гласила:

Изменив слово Label на Textbox, я смог изменить способ отображения вывода. Вы можете увидеть, как это выглядит на рисунке B.

Изображение 4613
Рисунок B: Теперь результат отображается в текстовом поле.

Взглянув на рисунок выше, вы заметите, что хотя вывод отображается в текстовом поле, есть некоторые проблемы с форматированием. В частности, текстовое поле слишком маленькое, а весь вывод сведен в одну строку. К счастью, это достаточно легко исправить.

Чтобы отобразить текст на нескольких строках, необходимо добавить две строки кода. Эти строки:

Первая из этих строк определяет размер текстового поля, а вторая строка кода позволяет текстовому полю отображать несколько строк вывода. Вы можете увидеть результат на рисунке C. Он все еще не идеален, но мы приближаемся к нему.

Изображение 4614
Рисунок C: Текстовое поле теперь отображает несколько строк текста.

Проблема, с которой мы сталкиваемся сейчас, заключается в том, что некоторые имена виртуальных машин все еще перемешаны. К счастью, это тоже легко исправить. Возможно, вы помните, что когда мы отображали вывод в виде метки, нам приходилось вставлять `n после имени каждой виртуальной машины, чтобы начать новую строку. Это не совсем работает, когда мы переключаемся с метки на текстовое поле. Исправление состоит в том, чтобы использовать `r`n вместо `n. Этот код используется, чтобы сообщить PowerShell, что нам нужен возврат каретки и новая строка. Вот фактическая модификация скрипта:

Результат вы можете увидеть на рисунке D.

Изображение 4615
Рисунок D. Мы исправили проблему с позициями.

Теперь я хочу показать вам, как добавить немного визуального чутья к созданной вами форме. Один из способов сделать это — добавить всплеск цвета. Как насчет того, чтобы начать с изменения цвета фона формы?

Как вы помните, я использовал переменную с именем $Form для определения характеристик формы. Если мы хотим добавить цвет фона в форму, мы можем сделать это, добавив строку кода, которая устанавливает $Form.BackColor. Например, я мог бы сделать фон формы светло-голубым, добавив эту строку кода:

Вы можете увидеть результаты на рисунке E.

Изображение 4616
Рисунок E: Фон формы теперь светло-голубой.

ОК, это здорово, но теперь кнопка как бы уходит на задний план. Итак, что мы можем сделать с изменением цвета кнопки? Что ж, мы можем использовать точно такую же технику, за исключением того, что на этот раз цвет фона нужно применить к кнопке, а не к форме в целом. Если, например, вы хотите сделать кнопку светло-серой, вы можете добавить эту строку кода:

Вы можете увидеть результаты на рисунке F.

Изображение 4617
Рисунок F. Теперь кнопка светло-серого цвета.

Лично я считаю, что теперь форма выглядит нормально, но давайте предположим, что мы хотели изменить цвет сообщения «нажмите кнопку». Для этого вы должны установить цвет переднего плана объекта метки. Если, например, вы хотите сделать текст метки темно-синим, вы можете использовать эту строку кода:

Вы можете увидеть, как это выглядит на рисунке G.

Изображение 4618
Рисунок G: я изменил цвет текста на темно-синий.

Я понимаю, что внес много изменений в сценарий, поэтому вот полный код в том виде, в каком он существует на данный момент (несколько строк были переставлены):

Вывод

Как видите, PowerShell дает вам возможность отображать вывод формы в более визуально привлекательном виде. В следующей статье я хочу продолжить обсуждение, показав вам, как работают списки.