【发布时间】:2020-08-11 21:45:03
【问题描述】:
我想知道如何编写程序来执行以下操作:
var text = Console.ReadLine();
并允许用户稍后擦除读取的文本。但是,没有明确的方法可以做到这一点。我知道这是可以做到的,因为有一些用 c# 编写的文本编辑器。有人能指出我正确的方向吗?
【问题讨论】:
标签: c# console operating-system console-application cosmos
我想知道如何编写程序来执行以下操作:
var text = Console.ReadLine();
并允许用户稍后擦除读取的文本。但是,没有明确的方法可以做到这一点。我知道这是可以做到的,因为有一些用 c# 编写的文本编辑器。有人能指出我正确的方向吗?
【问题讨论】:
标签: c# console operating-system console-application cosmos
这完全取决于您要如何删除该行。
您可以检查Can Console.Clear be used to only clear a line instead of whole console?,它基本上是用空字符串替换特定行:
SetCursorPosition documentation
// Parameters left, top
Console.SetCursorPosition(0, Console.CursorTop - 1);
Console.Write(new string(' ', Console.WindowWidth));
Console.SetCursorPosition(0, Console.CursorTop);
这里的问题是,用户将如何与控制台交互以让控制台知道要删除哪一行,因为该行会随着新行的插入而改变,因此您需要找到一种方法来计算第一个已插入。
所以每当您Writeline 或Readline 时,您都需要增加计数器来维护历史记录。如果你想不止一行,那就更复杂了。
【讨论】:
对于初学者,请查看Console 可用于您正在使用的相应框架版本的方法。可以调整光标的位置,带来很多乐趣。
https://docs.microsoft.com/en-us/dotnet/api/system.console.setcursorposition?view=netcore-3.1
【讨论】: