gpt4 book ai didi

c# - 根据用户击键更改控制台上的字符

转载 作者:行者123 更新时间:2023-11-30 12:38:12 25 4
gpt4 key购买 nike

我想做的是根据用户按下的内容更改控制台。

所以我有一个包含如下三个选项的控制台:

>  Option 1

Option 2

Option 3

基本上,如果用户按下向下箭头,控制台会变成这样:

Option 1

> Option 2

Option 3

如果用户按下向上箭头,控制台会返回到初始状态。

我知道如何使用 Console.ReadKey() 读取用户的输入,但我不知道如何修改已写入的输出。

最后一件事是,当用户按下回车键时,控制台不会创建新行,而是选择其中一个选项并调用委托(delegate)。

最佳答案

使用 Console.ReadKey 和一些变量来保存所选选项的状态并不难实现。

下面的代码是您正在寻找的一个非常快速和惰性的实现。花点时间自己正确地重写它 - 这是为了让您了解如何实现您正在寻找的东西。

static void Main(string[] args)
{
bool IsRunning = true;
int Selected = 1;

while (IsRunning)
{
ConsoleKeyInfo NextKey = new ConsoleKeyInfo();

if (Selected < 1)
Selected = 3;
else if (Selected > 3)
Selected = 1;

Console.Clear();
if (Selected == 1)
Console.Write("> ");
Console.WriteLine("Option 1");
Console.WriteLine();
if (Selected == 2)
Console.Write("> ");
Console.WriteLine("Option 2");
Console.WriteLine();
if (Selected == 3)
Console.Write("> ");
Console.WriteLine("Option 3");
Console.WriteLine();
Console.Write("Choose an option (Q to Quit): ");

while (!(NextKey.Key == ConsoleKey.DownArrow ||
NextKey.Key == ConsoleKey.UpArrow ||
NextKey.Key == ConsoleKey.Q ||
(NextKey.KeyChar >= '1' &&
NextKey.KeyChar <= '3')))
{
NextKey = Console.ReadKey();
}

switch (NextKey.Key)
{
case ConsoleKey.D1:
// Do something
break;

case ConsoleKey.D2:
// Do something
break;

case ConsoleKey.D3:
// Do something
break;

case ConsoleKey.DownArrow:
Selected++;
break;

case ConsoleKey.UpArrow:
Selected--;
break;

case ConsoleKey.Q:
IsRunning = false;
break;
}
}
}

代码将在未按下“Q”键退出应用程序时循环。

按下或向上箭头将轮流显示可用选项。

按下 1、2 或 3 后,您将导致运行 switch 语句中的 //Do something 行。您应该在此处调用每个选项存在的任何功能。

为了使用所选选项更新“菜单”,清除控制台输出然后重新输出。正确的选项通过 Selected 变量识别。

还有其他几种方法可以实现上述内容,其中一些更加简洁。我想让你知道从哪里开始。我并不是说这是最好或最整洁的解决方案。

编辑

一个想法出现了——您想使用 Enter 来选择选项。

我稍微修改了代码以提供该功能:

    while (!(NextKey.Key == ConsoleKey.DownArrow ||
NextKey.Key == ConsoleKey.UpArrow ||
NextKey.Key == ConsoleKey.Q ||
NextKey.Key == ConsoleKey.Enter))
{
NextKey = Console.ReadKey();
}

switch (NextKey.Key)
{
case ConsoleKey.Enter:
// Do something depending on Selected option
switch (Selected)
{
case 1:
// Do something
break;

case 2:
// Do something
break;

case 3:
// Do something
break;
}
break;

case ConsoleKey.DownArrow:
...

关于c# - 根据用户击键更改控制台上的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54469910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com