在TextReader上实现ReadKey()

时间:2013-08-15 13:32:05

标签: c# textreader

我有一个类通过TextReader接受输入,并允许类从控制台或文本框接收输入。

以下是我正在尝试做的一个非常基本的例子:

using System.IO;

class TestReader()
{
    public TextReader CurrentStream { get; }

    public void SetInputStream( TextReader reader)
    {
        Reader = reader;
    }
}

class Program
{
    static void Main( string[] args )
    {
        TestReader rdr = new TestReader();
        rdr.SetInputStream(Console.In);

        var input = (char)rdr.CurrentStream.Read();

        Console.WriteLine( "You selected: " + input );

    }
}

如何更改上述内容以实现ReadKey(),因为上面示例中的Read()方法会一直接受输入,直到按下Enter键为止?我想实现ReadKey(),这样它只接受一个按键。

感谢。

**编辑**

为了进一步说明问题,我希望在不使用Console.ReadKey()的情况下实现ReadKey()。我不确定这是否可能,因为谷歌到目前为止还没有发现任何事情。

1 个答案:

答案 0 :(得分:0)

我用过

     ConsoleKeyInfo info;
     do
     {
        info = Console.ReadKey();
     } while (info.KeyChar != '\n' &&
        info.KeyChar != '\r'); 

循环直到我按下

如果您只有输入流或textBox,则可以执行if语句。在控制台使用我的示例的情况下,如果textBox读取它的文本