gpt4 book ai didi

c# - 同时使用 Readline() 和 ReadKey()

转载 作者:太空狗 更新时间:2023-10-29 23:25:35 29 4
gpt4 key购买 nike

有什么方法可以同时检测 Readline 和 ReadKey,以便在大多数情况下它的行为类似于 readline,除了应该检测的一些特殊键输入外?

我需要一些“并行”实现来引入同时性。下面的代码是同步的,不符合我的需要

while ((line = Console.ReadLine()) != "x")
{
if (line == "BLABLA")
{
//Stuff
}

else
{
//Stuff
}

ConsoleKeyInfo ki = Console.ReadKey(true);
if ((ki.Key == ConsoleKey.V) && (ki.Modifiers == ConsoleModifiers.Control))
{
//Stuff
}
}

最佳答案

这是我刚刚创建的函数。

现在它只处理 BackspaceEnterEsc,但如果您认为有必要,它可以很容易地修改以处理其他键.

    // returns null if user pressed Escape, or the contents of the line if they pressed Enter.
private static string ReadLineOrEsc()
{
string retString = "";

int curIndex = 0;
do
{
ConsoleKeyInfo readKeyResult = Console.ReadKey(true);

// handle Esc
if (readKeyResult.Key == ConsoleKey.Escape)
{
Console.WriteLine();
return null;
}

// handle Enter
if (readKeyResult.Key == ConsoleKey.Enter)
{
Console.WriteLine();
return retString;
}

// handle backspace
if (readKeyResult.Key == ConsoleKey.Backspace)
{
if (curIndex > 0)
{
retString = retString.Remove(retString.Length - 1);
Console.Write(readKeyResult.KeyChar);
Console.Write(' ');
Console.Write(readKeyResult.KeyChar);
curIndex--;
}
}
else
// handle all other keypresses
{
retString += readKeyResult.KeyChar;
Console.Write(readKeyResult.KeyChar);
curIndex++;
}
}
while (true);
}

关于c# - 同时使用 Readline() 和 ReadKey(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8789646/

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