首页 > 解决方案 > 如何使控制台仅接受来自 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();
    }
}

标签: c#consoleconsole-input

解决方案


在 first 之前添加这一行if。然后删除if语句和var key...行。

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

替代的,更详细的版本:

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

推荐阅读