- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有什么方法可以同时检测 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
}
}
最佳答案
这是我刚刚创建的函数。
现在它只处理 Backspace、Enter 和 Esc,但如果您认为有必要,它可以很容易地修改以处理其他键.
// 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/
我在 ReadMode('cbreak') 中使用 Term::ReadKey 读取单个字符并根据输入执行操作。这适用于除箭头键之外的所有其他键。当按下箭头键时,该操作执行 3 次,我理解这是因为箭头
在 perl 脚本中,我试图在不阻塞和不回显输入的字符的情况下接受输入(脚本正在生成输出,我希望使用“热键”来改变其行为)。 我尽可能使用 use Term::ReadKey; ReadMode( "
在我的脚本中,我需要从用户那里获取1个字符,并在不等待Enter的情况下立即对其进行处理。 另外,我想将字符区分大小写。 write-host("Please press a or A:") $cho
我正在编写一个小型 C# 控制台应用程序。 我希望应用程序等待用户关于 Y 或 N 按键的指令(如果按下任何其他键,应用程序会忽略这一点并等待 Y 或 N,然后运行依赖于按键的代码)是或否的答案。 我
我正在尝试按 Q 来退出控制台窗口中的内容。我不喜欢我当前的实现。有没有办法可以异步或使用回调从控制台获取 key ? 最佳答案 您可以从另一个线程调用Console.ReadKey(),这样它就不会
一开始我会说我是 C# 和编程的新手。尝试尽可能多地学习一个人。我的第一个学习项目很简单。使用“W、S、A、D”在 10x10 阵列中移动。这是让用户通过阵列移动他的角色的“游戏”。问题是只要他的位置
请看original Microsoft example . 在第二个例子中我们发现如下代码: // The simplest UI thread ever invented. Task.Run(()
我正在尝试使用 ReadKey() 获取密码字段,因此它不会显示在我在 Ubuntu 上运行的 .net 核心应用程序的控制台中。 这是代码: while (true) { var key =
这个问题在这里已经有了答案: How to add a Timeout to Console.ReadLine()? (33 个答案) 关闭 9 年前。 我构建了一个简单的控制台应用程序,我需要为用
我正在制作华氏温度到摄氏温度的转换器(一个非常简单的转换器,因为我是新手),当我使用 Console.ReadKey() 时,它会显示用户按下的字符屏幕。有没有办法隐藏用户输入? cki = Cons
我有一个通过 TextReader 接受输入的类,并将允许该类从控制台或文本框接收输入。 以下是我正在尝试做的一个非常基本的示例: using System.IO; class TestReader(
我正在用 perl 编写一个简单的 motd 脚本,它解析来自特定网站的消息并将它们显示在终端屏幕的中央。 为了获得终端的宽度,我使用了 CPAN 模块 Term::ReadKey。 现在我用 调用这
当我在 Visual Studio 2015 的 C# 交互窗口中键入 Console.Readkey() 时,它只是挂起(键入任意数量的字符似乎没有任何作用)。这是一个不正确的设置,还是我不了解交互
我使用 Console.ReadKey() 从多个不时变化的选项中进行选择。在这个初始代码片段之前有一个 for 循环,它将出现次数计入 int 类型的计数器变量。 重点是使用 Console.Rea
大多数编程书籍都会告诉您使用 Console.ReadKey() 来暂停控制台,但是有更好的选择吗? Console.WriteLine("Press any key to continue.");
输出看起来像这样: ] [ Your input is: ffffffwwqqqwffasfffffffw > 当您使用 BACKSPACE 时,这本来是不可能的,为什么会这样 u
有什么方法可以同时检测 Readline 和 ReadKey,以便在大多数情况下它的行为类似于 readline,除了应该检测的一些特殊键输入外? 我需要一些“并行”实现来引入同时性。下面的代码是同步
我正在尝试运行我的代码,直到按下 Esc。因此我在我的控制台中使用 ReadKey var input = Console.ReadKey(); do { } while (input.Key !=
在多线程程序中使用 Console.ReadKey() 时遇到了一个奇怪的问题。 我的问题是:为什么会这样?这是一个错误,还是因为我在滥用 Console?(请注意,控制台应该是线程安全的,accor
以下代码是一个众所周知的示例,用于显示调试版本和发布版本之间的区别: using System; using System.Threading; public static class Program
我是一名优秀的程序员,十分优秀!