Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clearing a line in the console

How can a line in the console be cleared in C#?

I know how to place the cursor at the beginning of a line:

Console.SetCursorPosition(0, Console.CursorTop);
like image 328
artoon Avatar asked Mar 14 '13 22:03

artoon


3 Answers

Simplest method would be to move to the start of the line, as you have done, and then write out a string of spaces the same length as the length of the line.

Console.Write(new String(' ', Console.BufferWidth));
like image 169
Andrew Cooper Avatar answered Sep 21 '22 05:09

Andrew Cooper


Once the last space of a console buffer row is used, the console cursor automatically jumps to the next line.

  1. Reset cursor back to the beginning before it reaches edge of console
  2. Erase old console output, placing cursor on next line
  3. Reset cursor back onto the line that was just cleared

    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;
    }
    
like image 39
aj.toulan Avatar answered Sep 19 '22 05:09

aj.toulan


(Combining at.toulan and Andrew's answers here.)

Simplest is, to overwrite over the last line:

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

If "new line of text" is shorter than the text that was there before, write spaces before writing your text, like Andrew says.

like image 21
knocte Avatar answered Sep 18 '22 05:09

knocte