让我解释一下,这就是我想要实现的目标:
Enter name:
F4-Quit
Run Code Online (Sandbox Code Playgroud)
有没有办法显示下一行(F4-Quit)而没有readline在显示之前等待用户输入?原因是我想,在任何时候退出,即使名称尚未输入(光标在等待),这在许多情况下非常有用,在这种情况下,有人在输入信息的过程中改变了主意并想要退出或返回.
如果那不可能会有什么方法呢?
谢谢!
只需编写自己的ReadLine()版本.这是.NET的TryParse()模式中的TryReadLine()版本:
static bool TryReadLine(out string result) {
var buf = new StringBuilder();
for (; ; ) {
var key = Console.ReadKey(true);
if (key.Key == ConsoleKey.F4) {
result = "";
return false;
}
else if (key.Key == ConsoleKey.Enter) {
result = buf.ToString();
return true;
}
else if (key.Key == ConsoleKey.Backspace && buf.Length > 0) {
buf.Remove(buf.Length - 1, 1);
Console.Write("\b \b");
}
else if (key.KeyChar != 0) {
buf.Append(key.KeyChar);
Console.Write(key.KeyChar);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,那么解决方法是什么?
解决这个问题的最佳方法是使用 GUI 应用程序。这将消除控制台对您施加的限制。
一般来说,如果您想要复杂的用户输入控制,UI 将比控制台更好。
如果您必须使用控制台应用程序,您可能需要Console.ReadKey在循环中使用而不是Console.ReadLine, 并检查“转义”击键。一旦输入新行字符,您就可以处理您的“文本”命令/输入/等。
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |