【发布时间】:2021-12-16 07:22:13
【问题描述】:
第一次在这里发帖,如果我错过了重要的事情,请提前道歉,如果是这样,请告诉我!
我正在编写一个控制台应用程序,它的菜单在不同的层中有几个不同的选项,我正在尝试创建一个功能,当用户在这些菜单中工作时,随时注意 Esc 键被按下。为了让我的代码不那么混乱,我编写了一个单独的方法,当我要求输入时,我可以在任何时候简单地调用它(比如选择,或者在表单中输入信息等)。 我遇到的问题是它总是取消第一次按键。如果用户输入要在菜单中移动的数字,则不会输入数字,如果他们在表单中输入名称,则缺少第一个字母等。 有没有办法解决这个问题?
目前的代码是这样的;
public static void checkForEsc()
{
ConsoleKeyInfo key = Console.ReadKey(true);
if (key.Key == ConsoleKey.Escape)
{
switch (currentUserisAdmin)
{
case true:
Menu.AdminMenu();
break;
case false:
Menu.CustomerMenu();
break;
}
}
}
提前致谢:)
编辑:
可能值得补充的是,调用这个 sn-p 的代码看起来像这样,变化非常小;
Console.WriteLine($"1. Add a user\n2. Remove a user \n3. See user info \n \n9. Cancel");
Program.checkForEsc();
int response2 = CheckIfResponseInt(Console.ReadLine());
【问题讨论】: