c#console:如何ReadLine而无需按[Enter]

时间:2016-05-20 19:05:10

标签: c# console-application

我的c#控制台应用程序用作我的c#表单应用程序的登录,问题是,在我的c#控制台应用程序中,我无法找到ReadLine的方法,而无需按Enter,因为我需要检测F2Enter是否被按下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
    }                            
}                         



谢谢你的时间。

4 个答案:

答案 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();
    }