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

NBM*_*NBM 5 c# interactive console-application yeoman .net-core

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

当您将 yeoman 安装为 node.js 包并使用“yo”从命令行调用它时,

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

无论如何,是否有用于此目的的任何代码或库?(在 .NET Core 中)

在此输入图像描述 在此输入图像描述

svi*_*ick 8

解决方案的关键部分是:

  • 您可以用来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}.");
Run Code Online (Sandbox Code Playgroud)