【问题标题】:Clearing a line in the console清除控制台中的一行
【发布时间】:2013-03-14 22:35:57
【问题描述】:

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

我知道如何将光标放在行首:

Console.SetCursorPosition(0, Console.CursorTop);

【问题讨论】:

标签: c# console-application line


【解决方案1】:

最简单的方法是移动到行首,就像你所做的那样,然后写出与行长度相同的一串空格。

Console.Write(new String(' ', Console.BufferWidth));

【讨论】:

  • 这对我来说似乎换行了。 Console.Write(new String(' ', Console.BufferWidth - 1)) 怎么样??
  • 确定它确实...它只是写了完整的行!之后只需向上移动一行。如果你做-1,你会留下一个字符不空白!
【解决方案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;
    }
    

【讨论】:

    【解决方案3】:

    (在此处结合 at.toulan 和 Andrew 的答案。)

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

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

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

    【讨论】:

      【解决方案4】:

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

      do { Console.Write("\b \b"); } while (Console.CursorLeft > 0);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-21
        • 2018-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多