【发布时间】:2017-04-18 17:55:35
【问题描述】:
我知道我可以使用 Console.ReadLine() 来允许用户输入,但它只允许用户从光标所在的位置输入,我想要一种能够允许用户从行首输入的方法(超过整行),而不仅仅是光标所在的位置。例如:
for (int i = 1;i <= 5;i++) Console.Write(i+" ");
string x = Console.ReadLine();
这将给出以下输出:
1 2 3 4 5 _
其中'_'指的是光标,这样,用户将只能从光标位置开始书写——他也不能使用退格键来删除前面的字符。那么如何在光标不在行首时允许用户输入整行呢?
【问题讨论】:
-
C# shell 并不是真正为开箱即用而设计的。可以肯定的是,您只需在控制台输入中一次读取一个键,并在用户自己按下箭头键、退格键等时处理移动光标。你可能最好简单地调整你的 UI;要么使用更适合控制台应用程序的 UI,要么使用真正为更复杂的用户交互而设计的非控制台 UI。
-
@Servy 一次读取一个键当然是最接近的解决方案,但是将这些值存储在数组或列表中会更复杂,因为这不会像简单的 do-it-all
Console.ReadLine()在用户完成输入后开始处理值,因此它可以看到整行而不是当前光标位置的一个字符。 -
我的意思是,如果你要这样做,你会想要编写自己的方法来完成所有需要的工作并在完成后返回一个字符串,以便调用者可以调用该方法并获取一个字符串。编写这样的方法确实需要大量的工作。这就是为什么我说你应该避免需要解决这个问题。
标签: c# input user-input