📜  c# 键盘输入 - C# (1)

📅  最后修改于: 2023-12-03 15:13:52.920000             🧑  作者: Mango

C# 键盘输入

在 C# 中,可以使用 Console 类的 ReadKey() 或 ReadLine() 方法来获取用户的键盘输入。

使用 Console.ReadKey()

Console.ReadKey() 方法会等待用户输入一个键后返回该键的 ConsoleKeyInfo 对象,其中包含按键的字符和键码等信息。

ConsoleKeyInfo keyInfo = Console.ReadKey();
Console.WriteLine("您输入的是:" + keyInfo.KeyChar);

可以使用 keyInfo 对象的 Key 属性来判断用户输入的是哪个键,例如:

ConsoleKeyInfo keyInfo = Console.ReadKey();
if (keyInfo.Key == ConsoleKey.Enter)
{
    Console.WriteLine("您按下了回车键。");
}
使用 Console.ReadLine()

Console.ReadLine() 方法会等待用户输入一行字符后返回该字符串,例如:

string input = Console.ReadLine();
Console.WriteLine("您输入的是:" + input);

需要注意的是,Console.ReadLine() 方法会一直等待用户输入,直到用户按下回车键才会返回字符串。

使用 ConsoleKey

ConsoleKey 枚举类型定义了常用的键码常量,例如:

ConsoleKeyInfo keyInfo = Console.ReadKey();
if (keyInfo.Key == ConsoleKey.Escape)
{
    Console.WriteLine("您按下了 Esc 键。");
}

完整的 ConsoleKey 枚举类型定义了 147 个键码常量,包括字母、数字、符号、功能键等,详见官方文档。

超时输入

如果希望用户输入有一个超时限制,可以使用 Console.KeyAvailable 和 Thread.Sleep 来实现:

Console.Write("请输入数字:");
                
DateTime start = DateTime.Now;
while ((DateTime.Now - start).TotalSeconds < 5)
{
    if (Console.KeyAvailable)
    {
        char c = Console.ReadKey().KeyChar;
        if (Char.IsNumber(c))
        {
            Console.WriteLine("\n您输入的数字是:" + c);
            return;
        }
    }
    Thread.Sleep(100);
}

Console.WriteLine("\n您没有在规定时间内输入数字。");

该程序会等待用户在 5 秒内输入一个数字字符,如果超时则提示用户没有输入成功。其中 Console.KeyAvailable 属性用于判断是否有键盘输入,Thread.Sleep 方法用于等待一段时间。

总结

本文介绍了 C# 中的键盘输入方法,包括 Console.ReadKey()、Console.ReadLine() 和 ConsoleKey 枚举类型,还介绍了超时输入的实现方式。希望本文能够对大家有所帮助。