.NET Core 控制台应用程序中的交互式、可选择和可滚动项目,如 Yeoman 控制台

Interactive, Selectable and scrollable Items in Console Application in .NET Core like Yeoman console

有人知道如何在控制台中创建有吸引力的和可选的项目吗?

当您将 yeoman 安装为 node.js 包并使用 'yo'、

从命令行调用它时

他们向我们展示了一个可滚动项目列表,可以使用上下箭头键进行选择。

是否有用于此目的的任何代码或库? (在 .NET 核心中)

解决方案的关键部分是:

  • 您可以使用 Console.ReadKey() 检测箭头键的按下
  • 可以使用Console.CursorTop读写当前光标位置

使用这两个,这是一个非常简单的代码,可以满足您的需求:

int optionsCount = 5;

int selected = 0;

bool done = false;

while (!done)
{
    for (int i = 0; i < optionsCount; i++)
    {
        if (selected == i)
        {
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("> ");
        }
        else
        {
            Console.Write("  ");
        }

        Console.WriteLine(i);

        Console.ResetColor();
    }

    switch (Console.ReadKey(true).Key)
    {
        case ConsoleKey.UpArrow:
            selected = Math.Max(0, selected - 1);
            break;
        case ConsoleKey.DownArrow:
            selected = Math.Min(optionsCount - 1, selected + 1);
            break;
        case ConsoleKey.Enter:
            done = true;
            break;
    }

    if (!done)
        Console.CursorTop = Console.CursorTop - optionsCount;
}

Console.WriteLine($"Selected {selected}.");