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 キーの押下を無視したいのですが (何も起こりません)、どうすればよいですか?