C#控制台循环继续在KeyUp上进行

时间:2017-11-16 04:12:08

标签: c# loops

我需要将其发送到我的代码只会在释放按下的键时退出循环的位置。我这样做是控制台,需要留在控制台。

以下是代码示例。

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())并不理想。

2 个答案:

答案 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)

存储最后按下的键并仅在与上次按下的键不同时打印字符。