[C#]Spectre.Console
c# Console SPECTRE
2023-06-13 09:15:23 时间
Spectre.Console
是 .NET/C#
平台非常优秀的控制台应用程序 UI
框架库,提供非常多开箱可用且非常好看的 UI
组件。官网地址:https://spectreconsole.net/
使用非常简单,只需要通过 Nuget
安装 Spectre.Console.Cli
拓展包即可。
Spectre.Console 和 Spectre.Console.Cli 区别
Spectre.Console
是不包含 args
命令行参数解析的,但作为一个 tools
工具对于解析 args
参数显得非常重要,所以推荐安装 Spectre.Console.Cli
。
下面是 Spectre.Console
的 UI
组件 预览图:
下面官方实例,是为了自己抄代码:
Borders
using Spectre.Console;
using Spectre.Console.Rendering;
namespace Borders;
public static class Program
{
public static void Main()
{
// Render panel borders
HorizontalRule("PANEL BORDERS");
PanelBorders();
// Render table borders
HorizontalRule("TABLE BORDERS");
TableBorders();
}
private static void PanelBorders()
{
static IRenderable CreatePanel(string name, BoxBorder border)
{
return new Panel($"This is a panel with\nthe [yellow]{name}[/] border.")
.Header($" [blue]{name}[/] ", Justify.Center)
.Border(border)
.BorderStyle(Style.Parse("grey"));
}
var items = new[]
{
CreatePanel("Ascii", BoxBorder.Ascii),
CreatePanel("Square", BoxBorder.Square),
CreatePanel("Rounded", BoxBorder.Rounded),
CreatePanel("Heavy", BoxBorder.Heavy),
CreatePanel("Double", BoxBorder.Double),
CreatePanel("None", BoxBorder.None),
};
AnsiConsole.Write(
new Padder(
new Columns(items).PadRight(2),
new Padding(2, 0, 0, 0)));
}
private static void TableBorders()
{
static IRenderable CreateTable(string name, TableBorder border)
{
var table = new Table().Border(border);
table.AddColumn("[yellow]Header 1[/]", c => c.Footer("[grey]Footer 1[/]"));
table.AddColumn("[yellow]Header 2[/]", col => col.Footer("[grey]Footer 2[/]").RightAligned());
table.AddRow("Cell", "Cell");
table.AddRow("Cell", "Cell");
return new Panel(table)
.Header($" [blue]{name}[/] ", Justify.Center)
.NoBorder();
}
var items = new[]
{
CreateTable("Ascii", TableBorder.Ascii),
CreateTable("Ascii2", TableBorder.Ascii2),
CreateTable("AsciiDoubleHead", TableBorder.AsciiDoubleHead),
CreateTable("Horizontal", TableBorder.Horizontal),
CreateTable("Simple", TableBorder.Simple),
CreateTable("SimpleHeavy", TableBorder.SimpleHeavy),
CreateTable("Minimal", TableBorder.Minimal),
CreateTable("MinimalHeavyHead", TableBorder.MinimalHeavyHead),
CreateTable("MinimalDoubleHead", TableBorder.MinimalDoubleHead),
CreateTable("Square", TableBorder.Square),
CreateTable("Rounded", TableBorder.Rounded),
CreateTable("Heavy", TableBorder.Heavy),
CreateTable("HeavyEdge", TableBorder.HeavyEdge),
CreateTable("HeavyHead", TableBorder.HeavyHead),
CreateTable("Double", TableBorder.Double),
CreateTable("DoubleEdge", TableBorder.DoubleEdge),
CreateTable("Markdown", TableBorder.Markdown),
};
AnsiConsole.Write(new Columns(items).Collapse());
}
private static void HorizontalRule(string title)
{
AnsiConsole.WriteLine();
AnsiConsole.Write(new Rule($"[white bold]{title}[/]").RuleStyle("grey").LeftJustified());
AnsiConsole.WriteLine();
}
}
相关文章
- C# winform DataGridView 常见属性
- C#中FileStream与StreamReader/StreamWriter区别
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- C#启动,停止Windows服务详解编程语言
- c#.net多线程编程教学——线程同步
- C#从实体对象集合中导出Excel的代码
- C#中让控件全屏显示的实现代码(WinForm)
- C#Console类的具体用法
- C#(int)中Convert、Parse、TryParse的区别
- C#实现阶乘(递归,非递归)实现代码
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- c#实现一元二次方程求解器示例分享
- C#生成随机数实例
- 基于C#实现的三层架构实例