【问题标题】:How to allow user to erase text that was already read by Console.ReadLine();如何允许用户删除已被 Console.ReadLine() 读取的文本;
【发布时间】:2020-08-11 21:45:03
【问题描述】:

我想知道如何编写程序来执行以下操作:

var text = Console.ReadLine();

并允许用户稍后擦除读取的文本。但是,没有明确的方法可以做到这一点。我知道这是可以做到的,因为有一些用 c# 编写的文本编辑器。有人能指出我正确的方向吗?

【问题讨论】:

    标签: c# console operating-system console-application cosmos


    【解决方案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);
    

    这里的问题是,用户将如何与控制台交互以让控制台知道要删除哪一行,因为该行会随着新行的插入而改变,因此您需要找到一种方法来计算第一个已插入。

    所以每当您WritelineReadline 时,您都需要增加计数器来维护历史记录。如果你想不止一行,那就更复杂了。

    【讨论】:

      【解决方案2】:

      对于初学者,请查看Console 可用于您正在使用的相应框架版本的方法。可以调整光标的位置,带来很多乐趣。

      https://docs.microsoft.com/en-us/dotnet/api/system.console.setcursorposition?view=netcore-3.1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-29
        • 2014-01-05
        • 2018-01-28
        • 2013-08-21
        • 2015-09-19
        • 1970-01-01
        相关资源
        最近更新 更多