我需要将其发送到我的代码只会在释放按下的键时退出循环的位置。我这样做是控制台,需要留在控制台。
以下是代码示例。
ConsoleKeyInfo = ki;
while (true)
{
ki = Console.ReadKey();
if (ki.Key == ConsoleKey.A)
{
Console.Write("A");
}
}
如上所示,当按下 A 键时,它将在控制台中写入A.如果按住 A 键,它将连续写入A.
我想要的是控制台写A ONCE 直到A键被释放。然后,如果再次按 A ,它将再次打印。
我已经考虑过使用" KeyUp"但是我无法在控制台应用程序上使用它。但是可以实现以下目标......
ConsoleKeyInfo = ki;
while (true)
{
ki = Console.ReadKey();
if (ki.Key == ConsoleKey.A)
{
//I know the following isn't actually code, but it's explaining what I want to happen.
do (onKeyRelease)
{
Console.Write("A");
}
}
}
基本上,当按下一个键直到释放键时,我只想要一个事情发生。释放键后,循环将重新开始。
请注意,我正在使用这个想法进行基于文本的RPG游戏。所以等到另一个键被按下(包括在结尾添加另一个 Console.ReadKey())并不理想。
答案 0 :(得分:1)
第一个建议 - 您是否在控制台显示“A”时尝试“中断”循环?
第二个建议 -
ConsoleKeyInfo = ki;
var alreadyPressed = false
while (true)
{
ki = Console.ReadKey();
if (ki.Key == ConsoleKey.A && !alreadyPressed)
{
Console.Write("A");
alreadyPressed = true;
}}`
答案 1 :(得分:0)
存储最后按下的键并仅在与上次按下的键不同时打印字符。