1

我希望我的控制台应用程序的用户可以更新由 Console.Write(); 编写的文本;例如:

var currentVar="bla-bla-bla";
Console.Write(currentVar);
var newVar=Console.Read();//here user can update previous output of Write() method;
Console.Write(newVar);//output of updated value

可能吗?

4

3 回答 3

1

Console.Read 不读取先前的输出,而是等待输入。

Console.Read方法 - MSDN

从标准输入流中读取下一个字符。

当您键入输入字符时,Read 方法会阻止其返回;当您按下 Enter 键时,它会终止。按 Enter 会在您的输入中附加一个依赖于平台的行终止序列(例如,Windows 会附加一个回车换行序列)。对 Read 方法的后续调用一次检索一个字符。检索到最后一个字符后,Read 再次阻止其返回并重复循环。

如果您打算用新内容覆盖以前的输出,请使用Console.SetCursorPosition. 另请参阅此答案

于 2013-05-10T10:31:47.983 回答
1

我认为这就是你想要做的。

    Console.WriteLine("Original");

    var newVar=Console.Read();

    Console.SetCursorPosition(0, Console.CursorTop -2); // Where -2 moves the cursor two lines up.

    Console.WriteLine(newVar);

然后,您将覆盖下一行,因为光标只会向下移动。您将需要再次使用 COnsole.SetCursorPosition 将光标放回您想要的位置。

于 2013-05-10T10:45:58.303 回答
0

您应该用自己的实现替换 StandardOutput 并捕获书面文本,然后用它做任何你想做的事情......

于 2013-05-10T10:43:53.957 回答