0
using System;
using System.Text;

namespace 判断输入是否为数字
{
    internal class Program
    {
        public static int ConsoleInputDigit(int length)
        {
            char[] news = new char[length];
            for (int i = 0; i < news.Length; i++)
            {
                char temp = Console.ReadKey().KeyChar;
                if (char.IsDigit(temp))
                {
                    news[i] = temp;
                }
                else
                {
                    Console.Write("\b \b");
                    i--;
                }
            }
            return int.Parse(new string(news));
        }
        public static void Main(string[] args)
        {
            Console.Write("Input Year:");
            int y = ConsoleInputDigit(4);
            Console.Write("\nInput Month:");
            int m = ConsoleInputDigit(2);
            Console.Write("\nInput Day:");
            int d = ConsoleInputDigit(2);
        }
    }
}

この ConsoleApp は Console から年月日を入力することを想定しています。数字(0~9)以外のキーを無効にしたい。

これが私のコードです。通常、動作します。

しかし、例えば年に「2020」と入力したいのですが、「202」と入力してEnterキーを押すと、カーソルがこの行の先頭にジャンプします。スクリーンショットのように見えますが、最終結果には影響しません。

コンソールで Enter キーの押下を無視したいのですが (何も起こりません)、どうすればよいですか?

私のシーンショット

4

1 に答える 1