如何允许用户擦除 Console.ReadLine() 已阅读的文本;
How to allow user to erase text that was already read by Console.ReadLine();
我想知道如何编写一个程序来做这样的事情:
var text = Console.ReadLine();
并允许用户稍后擦除已阅读的文本。但是,没有明确的方法可以做到这一点。我知道这是可以做到的,因为有一些用 C# 编写的文本编辑器。有人能指出我正确的方向吗?
对于初学者,请查看 Console
适用于您正在使用的相应框架版本的可用方法。可调整光标位置,乐趣无穷
https://docs.microsoft.com/en-us/dotnet/api/system.console.setcursorposition?view=netcore-3.1
这完全取决于您要如何删除该行。
您可以检查 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
你需要增加计数器来维护历史。如果你想为不止一行做,那就更复杂了。
我想知道如何编写一个程序来做这样的事情:
var text = Console.ReadLine();
并允许用户稍后擦除已阅读的文本。但是,没有明确的方法可以做到这一点。我知道这是可以做到的,因为有一些用 C# 编写的文本编辑器。有人能指出我正确的方向吗?
对于初学者,请查看 Console
适用于您正在使用的相应框架版本的可用方法。可调整光标位置,乐趣无穷
https://docs.microsoft.com/en-us/dotnet/api/system.console.setcursorposition?view=netcore-3.1
这完全取决于您要如何删除该行。
您可以检查 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
你需要增加计数器来维护历史。如果你想为不止一行做,那就更复杂了。