gpt4 book ai didi

c# - 在 CONSOLE C# 中检测单键按下

转载 作者:行者123 更新时间:2023-11-30 12:21:33 25 4
gpt4 key购买 nike

我是编码新手,决定从 C# 开始。我决定编写一个简单的控制台程序来检测按键,如果只按下 Enter,它将显示数字。问题是你只要按住键,它就会继续显示数字。我应该在我的代码中添加什么,以便程序将仅检测SINGLE 按下并忽略用户 HOLDING 键?(我没有在 CONSOLE C# 中找到任何有关此问题的信息,仅在 Forms one 中。既不在这个论坛上,也不在 Web 中)

提前致谢

static void Main(string[] args)
{
Console.WriteLine("Press Enter to play!");

int num = 0;
void WaitForKey(ConsoleKey key)
{
while (Console.ReadKey(true).Key != key)
{ }
}

for (int i = 0; i < 10; i++)
{
WaitForKey(ConsoleKey.Enter);
Console.Write("{0} ", num);
num++;
}
}

最佳答案

如果您的任务是计算键入/按住的键的变化量,您只需记住最后一个键就可以做到这一点

var lastChar = char.MaxValue;
var index = 0;
do
{
var x = Console.ReadKey();
if (lastChar != x.KeyChar)
{
lastChar = x.KeyChar;
Console.WriteLine(++index);
}
} while (index < 10);

如果您需要定义单个键,您可以使用 StopWatch 类来检查从上一个键开始的时间流逝(在示例中 300 仅用于测试,如果是这样,我建议深入研究它符合你的目标)

var sw = Stopwatch.StartNew();
do
{
var x = Console.ReadKey();
if (sw.ElapsedMilliseconds > 300)
{
Console.WriteLine(++index);
}
sw.Restart();
} while (index < 10);

或者两种方式结合

关于c# - 在 CONSOLE C# 中检测单键按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45393158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com