san40_u5an40.ConsoleDisplayFramework
2.0.9
dotnet add package san40_u5an40.ConsoleDisplayFramework --version 2.0.9
NuGet\Install-Package san40_u5an40.ConsoleDisplayFramework -Version 2.0.9
<PackageReference Include="san40_u5an40.ConsoleDisplayFramework" Version="2.0.9" />
<PackageVersion Include="san40_u5an40.ConsoleDisplayFramework" Version="2.0.9" />
<PackageReference Include="san40_u5an40.ConsoleDisplayFramework" />
paket add san40_u5an40.ConsoleDisplayFramework --version 2.0.9
#r "nuget: san40_u5an40.ConsoleDisplayFramework, 2.0.9"
#:package san40_u5an40.ConsoleDisplayFramework@2.0.9
#addin nuget:?package=san40_u5an40.ConsoleDisplayFramework&version=2.0.9
#tool nuget:?package=san40_u5an40.ConsoleDisplayFramework&version=2.0.9
san40_u5an40.ConsoleDisplayFramework
Назначение
Данный фреймворк предназначен для быстрого создания адаптивных консольных дисплеев с поддержкой асинхронного ввода и вывода. Дисплей обновляется как при изменении размеров консольного окна, так и при изменении значения контроллера (если явно не указано обратное).
Пример использования
// Main:
var menu = new ControllerMenu()
.AddItem("Какой-то пункт")
.AddItem("Ещё один")
.AddItem("Ну а этот вообще");
menu.StartValue = 1;
menu.CurrentValueColor = ConsoleColor.DarkGreen;
int result = await Printer.ShowAsync(menu);
Console.WriteLine(result);
// Вывод:
// 1) Какой-то пункт ←
// 2) Ещё один
// 3) Ну а этот вообще
После вывода классом Printer контроллера, его значение можно изменять с помощью стрелок ↑ и ↓. Для выхода из меню необходимо нажать [enter].
Принцип работы
Ключевым типом для работы с адаптивными дисплеями является класс Printer. Для запуска работы контроллера используется метод ShowAsync (как показано в примере), который возвращает в конце своей работы введённое пользователем значение. Вторым параметром можно указать необходимо ли обновлять дисплей при изменении значения контроллера.
Виды контроллеров
| Контроллер | Возвращаемое значение | Описание |
|---|---|---|
ControllerMenu |
int - Указанный пункт меню. |
Принцип работы был показан в примере, но есть небольшое уточнение. Указанный пользователем пункт меню отсчитывается от стартового значения меню. Если оно не было указано явно, то по умолчанию используется 1. |
ControllerReadLine |
string - Введённая пользователем строка. |
Используется для текстового ввода. Можно указать подпись, например "Введите пароль: ", а также логическое значение, указывающее необходимо ли отображать значение, которое вводит пользователь. Рекомендуется для использования этого контроллера со скрытым вводом отключить обновления дисплея в Printer.ShowAsync(). |
ControllerYNChoice |
bool - Выбор пользователем [Y]/[N]-значения. |
Вводит бинарное значение, указанное пользователем с помощью клавиш [Y] и [N]. В качестве подписи по умолчанию используется "Подтвердите выбор: ([Y] - yes /[N] - no)". |
ControllerPressEnter |
bool - Всегда возвращает true. |
Выводит сообщение о необходимости нажать [enter] для продолжения работы программы, но можно указать и своё сообщение. |
Верхний дисплей
Представлен классом UpperDisplay и спроектирован на основе Builder-паттерна. Дисплей составляется построчно с помощью методов AppendEmpty, добавляющего строку без надписей, но с указанным дисплейным символом (рекомендуется использовать '-'), и Append, который также требует указание дисплейного символа и строки, которая будет отображаться внутри. По умолчанию используется выравнивание строки по центру, но можно явно задать выравнивание третьим параметром с помощью перечисления ConsoleDisplayAlignment.
Чтобы вывести верхний дисплей вместе с контроллером, его можно либо передать в параметр upperDisplay статического метода Printer.ShowAsync(), либо создать объект Printer на его основе, указав UpperDisplay в конструкторе. Тогда при вызове метода ShowAsync этого объекта автоматически будет печататься и верхний дисплей.
Пример использования:
var upper = new UpperDisplay()
.AppendEmpty('-')
.Append('-', "Добро пожаловать в программу")
.Append('-', "ТРААААКТОР")
.AppendEmpty('-');
var printer = new Printer(upper);
var readLine = new ControllerReadLine(message: "Введите пароль: ", isShowInput: false);
string result = await printer.ShowAsync(controlPanel: readLine, isUpdateInput: false);
Console.WriteLine(result);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- san40_u5an40.ExtraLib (>= 4.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Изменена кодировка Printer.ShowAsync на UTF8, что улучшает совместимость с разными консолями