设置:
.net程序中的控制台程序
我在循环中使用readkey,它会重写到屏幕上的同一行(Console.setCursorPosition)
但是,如果我输入Enter,则控制台会向上推文本,这是通常的命令行行为。
问题:
是否可以捕获按键(输入),以便我的程序获得密钥,但控制台没有?
环境是Linux,使用Mono(该程序应该是跨平台的)。所以低级别的Windows驱动程序拦截不是一种选择。
PS:我知道清除和重绘所有内容的方法。我想知道我的问题是否可行。
感谢您提供任何信息
答案 0 :(得分:2)
修改此处找到的代码后https://stackoverflow.com/a/8898251/1951298我找到了可以帮到你的东西,你看到当用户按下Enter键时,光标没有增加,并且没有任何内容被写入控制台
ConsoleKeyInfo keyinfo;
int left, top=0;
do
{
left = Console.CursorLeft;
top = Console.CursorTop;
keyinfo = Console.ReadKey(true);
if(keyinfo.Key.ToString().Equals("Enter"))
Console.SetCursorPosition(left,top-1);
else
Console.WriteLine(keyinfo.Key + " was pressed");
}
while (keyinfo.Key != ConsoleKey.X);
答案 1 :(得分:1)
Console.ReadKey(true)
应该读取密钥但不显示密码。
答案 2 :(得分:1)
你应该拦截按键。 MSDN Documentation
var PressedKey = Console.ReadKey(true)