2013-03-14 119 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"); 

如果“文本的新行”比在那里之前的文本短,写你的文字写之前的空间,就像安德鲁说。