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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="san40_u5an40.ConsoleDisplayFramework" Version="2.0.9" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="san40_u5an40.ConsoleDisplayFramework" Version="2.0.9" />
                    
Directory.Packages.props
<PackageReference Include="san40_u5an40.ConsoleDisplayFramework" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add san40_u5an40.ConsoleDisplayFramework --version 2.0.9
                    
#r "nuget: san40_u5an40.ConsoleDisplayFramework, 2.0.9"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package san40_u5an40.ConsoleDisplayFramework@2.0.9
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=san40_u5an40.ConsoleDisplayFramework&version=2.0.9
                    
Install as a Cake Addin
#tool nuget:?package=san40_u5an40.ConsoleDisplayFramework&version=2.0.9
                    
Install as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.9 187 7/5/2026
2.0.8 137 2/7/2026
2.0.7 137 2/7/2026
2.0.6 137 2/7/2026
2.0.5 131 2/7/2026
2.0.4 144 2/7/2026
2.0.3 133 2/5/2026
2.0.2 135 2/4/2026
2.0.1 138 2/4/2026
2.0.0 246 12/19/2025
1.0.2 220 11/23/2025
1.0.1 437 11/19/2025
1.0.0 224 11/6/2025

Изменена кодировка Printer.ShowAsync на UTF8, что улучшает совместимость с разными консолями