2013-03-14 86 views
5

如何能在控制檯線在C#中被清除?清除線在控制檯

我知道如何把光標放在一行的開頭:

Console.SetCursorPosition(0, Console.CursorTop); 
+2

谷歌是你的朋友http://msdn.microsoft.com/en-us/library/system.console.clear.aspx < - 首款谷歌的結果如何,行第一個結果:http://stackoverflow.com/questions/5027301/C-銳利清晰的控制檯,最後項目和替換新的控制檯動畫\ – 2013-03-14 22:36:44

回答

10

最簡單的方法是將移動到行的開始,因爲你做了,然後寫出來的字符串空格的長度與行的長度相同。

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

這似乎換到對我來說是新的生產線。如何Console.Write(新字符串('',Console.BufferWidth - 1))? – 2014-05-13 04:09:02

+0

當然,它只是寫完整的一行!之後再向上移動一行。如果你做-1,你會留下一個字符unblanked! – Zordid 2017-10-18 09:27:33

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; 
    } 
    
  4. 控制檯的邊緣前
0

(結合at.toulan和安德魯的答案在這裏。)

簡單的是,覆蓋在最後一行:

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

如果「文本的新行」比在那裏之前的文本短,寫你的文字寫之前的空間,就像安德魯說。