微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让控制台只接受来自 Enter 键的输入?

如何解决如何让控制台只接受来自 Enter 键的输入?

我想让 C# 控制台只接受来自启动屏幕上的 Enter 键的输入。

我已经做到了,只要按下 Enter 键,它就会关闭控制台。

我怎样才能让控制台只接受来自 Enter 键的输入,这样当我按其他任何东西时应用程序不会关闭,然后再接收正常输入?

class Program
{
    public static void ClearKeyBuffer()
    {
        while (Console.KeyAvailable)
            Console.ReadKey(true);
    }
    public static void Main (string[] args)
    {
        int attempts = 0;
        int displayattempts = 5;
        bool validentry;
        Console.WriteLine("Please press enter to begin");
        var key = System.Console.ReadKey(true);
        if (key.Key == ConsoleKey.Enter)
        {
            while (attempts < 5)
            {
                string input;
                attempts = (attempts + 1);
                Console.Clear();
                Console.WriteLine("Please wait...");
                Thread.Sleep(5000);
                Console.Clear();
                Console.WriteLine("Please enter your user number.");
                Console.WriteLine("Attempts Remaining:" + displayattempts);
                ClearKeyBuffer();
                Console.WriteLine(" ");
                input = Console.ReadLine();
                {
                    if (input == "5573")
                    {
                        validentry = true;
                    }

                    else
                    {
                        validentry = false;
                    }

                    if (validentry == false)
                    {
                        displayattempts = (displayattempts - 1);
                        Console.Clear();
                        Console.WriteLine("Error: Invalid number ID entered. Please wait 5 
                        seconds,and try again.");
                        Thread.Sleep(5000);
                    }

                    else if (validentry == true)
                    {
                        Console.Clear();
                        Console.WriteLine("Welcome Samuel");
                        ValidUserEntry();
                    }
                }
            }
        }
        if (displayattempts == 0)
        {
            Console.Clear();
            Console.WriteLine("Error: You have entered the wrong number ID too many times. 
             This system will Now close in 5 seconds...");
            Thread.Sleep(5000);
            Environment.Exit(0);
        }
    }

    public static void ValidUserEntry()
    {
        ClearKeyBuffer();
        Console.Clear();
        Console.WriteLine("Please wait...");
        Thread.Sleep(5000);
        ClearKeyBuffer();
        Console.Clear();
        Console.WriteLine("What would you like to do?");
        Console.ReadLine();
    }
}

解决方法

在第一个 if 之前添加此行。然后删除 if 语句和 var key... 行。

while (Console.ReadKey(true).Key != ConsoleKey.Enter);

替代的,更详细的版本:

ConsoleKeyInfo key;
do
{
    key = Console.ReadKey(true);
} while (key.Key != ConsoleKey.Enter);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。