我的c#控制台应用程序用作我的c#表单应用程序的登录,问题是,在我的c#控制台应用程序中,我无法找到ReadLine
的方法,而无需按Enter
,因为我需要检测F2
或Enter
是否被按下ReadLine
而无需用户再次按Enter
。例如,如果我想检测是否按下了F2
,我需要等到F2
被按下,直到我能够ReadLine
,希望这个问题措辞一致。它是有道理的,我相信你可以告诉我,这是一个非常棒的小伙伴'在c#。
我的问题的例子:
static void Main()
{
var KP = Console.ReadKey();
if (KP.Key == ConsoleKey.F2)
{
//User Presses F2
}
else if (KP.Key == ConsoleKey.Enter)
{
string UserName = ReadLineWithoutPressingEnter();//Just a example
//ReadLine without needing to press enter again
}
}
谢谢你的时间。
答案 0 :(得分:2)
保存ReadKey的结果,然后执行ReadLine:
public static void Main(string[] args)
{
var KP = Console.ReadKey();
if (KP.Key == ConsoleKey.F2)
{
return;
}
string UserName = KP.KeyChar + Console.ReadLine();
Console.WriteLine(UserName);
Console.ReadLine();
}
答案 1 :(得分:1)
您已找到Console.ReadKey()
。这是一个开始。您还需要围绕此函数构建一个状态机,以在该行的末尾返回一个已完成的字符串,但此方法是实现该工作的关键。别忘了处理退格和删除等事情。
答案 2 :(得分:1)
以下是尝试此操作的示例
static void Main(string[] args)
{
ConsoleKeyInfo cki = new ConsoleKeyInfo();
int i = 0;
do
{
while (Console.KeyAvailable == false)
Thread.Sleep(250); // Loop until input is entered.
cki = Console.ReadKey(true);
if (cki.Key == ConsoleKey.F1)
{
Console.WriteLine("User Have Press F1");
//do some thing
}
if (cki.Key == ConsoleKey.Enter)
{
Console.WriteLine("User Have Press Enter");
//do some thing
}
if (cki.Key == ConsoleKey.A)
{
Console.WriteLine("User Have Press A");
//do some thing
}
} while (cki.Key != ConsoleKey.X);
}
答案 3 :(得分:1)
这应该有效
static void Main(string[] args)
{
ConsoleKeyInfo e;
string userName = "";
while (true)
{
e = Console.ReadKey();
if (e.Key == ConsoleKey.Enter)
{
break;
}
else if (e.Key == ConsoleKey.F2)
{
//things to do when F2
}
userName += e.KeyChar;
}
Console.WriteLine("username: " + userName);
Console.Read();
}