5

如何在 C# 中清除控制台中的一行?

我知道如何将光标放在一行的开头:

Console.SetCursorPosition(0, Console.CursorTop);
4

4 回答 4

12

最简单的方法是移动到行的开头,就像您所做的那样,然后写出与行长度相同的空格字符串。

Console.Write(new String(' ', Console.BufferWidth));
于 2013-03-14T22:43:09.643 回答
2

一旦使用了控制台缓冲区行的最后一个空格,控制台光标就会自动跳转到下一行。

  1. 在光标到达控制台边缘之前将光标重置回开头
  2. 擦除旧的控制台输出,将光标放在下一行
  3. 将光标重置回刚刚清除的行

    while (true)
    {
      Console.Write(".");
      if (Console.CursorLeft + 1 >= Console.BufferWidth)
      {
        Console.SetCursorPosition(0, Console.CursorTop);
        Console.Write(Enumerable.Repeat<char>(' ', Console.BufferWidth).ToArray());
        Console.SetCursorPosition(0, Console.CursorTop - 1);
      }
    
      if (Console.KeyAvailable)
        break;
    }
    
于 2015-10-12T04:54:30.750 回答
2

(在这里结合 at.toulan 和 Andrew 的答案。)

最简单的是,覆盖最后一行:

Console.SetCursorPosition(0, Console.CursorTop - 1)
Console.WriteLine("new line of text");

如果“新文本行”比以前的文本短,请在写文本之前写下空格,就像 Andrew 说的那样。

于 2016-05-26T06:54:24.280 回答
1

设置好光标位置后,可以使用退格:

do { Console.Write("\b \b"); } while (Console.CursorLeft > 0);
于 2018-09-08T12:55:09.827 回答