【发布时间】:2013-08-15 13:32:04
【问题描述】:
我有一个通过 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()。我什至不确定这是否可能,因为 Google 到目前为止还没有提供任何信息。
【问题讨论】:
-
你不能因为文本阅读器是一个字符流,但是一个键(或组合键)可能不是一个字符。
-
@DarrenKopp:那么
ReadKey()是如何做到的呢?现在看来,我将不得不在不使用 Console.ReadKey() 的情况下实现我自己的ReadKey()方法。 -
ReadKey 有效,因为它正在拦截键盘按键事件。
标签: c# textreader