C#clear Console最后一项并替换新的? 控制台动画

以下CSharp代码(仅示例):

Console.WriteLine("Searching file in..."); foreach(var dir in DirList) { Console.WriteLine(dir); } 

打印输出为:

 Searching file in... dir1 dir2 dir3 dir4 . . . 

题? 我怎样才能得到输出

 Searching file in... dir1 

(然后清除dir1并打印dir2等等)所有下一个目录名称wiil将替换之前的目录

如果您的问题是清除控制台,那么使用方法Console.Clear(); ,如果不是,用这个来覆盖最后一行;

 Console.WriteLine("Searching file in..."); foreach(var dir in DirList) { Console.SetCursorPosition(1,0); Console.WriteLine(dir); } 

使用Console.SetCursorPosition将光标设置在最后一行的开头并重写它。

就像是:

 Console.WriteLine(dir); Console.SetCursorPosition(0, Console.CursorTop - 1); 

编辑:

根据您的评论,您可以执行以下操作:

 Console.WriteLine("Searching file in..."); foreach (var dir in DirList) { ClearCurrentConsoleLine(); Console.Write(dir); } 

使用ClearCurrentConsoleLine定义为:

 public static void ClearCurrentConsoleLine() { int currentLineCursor = Console.CursorTop; Console.SetCursorPosition(0, Console.CursorTop); for (int i = 0; i < Console.WindowWidth; i++) Console.Write(" "); Console.SetCursorPosition(0, currentLineCursor); } 

您可以使用“\ r”打印,这样光标不会跳过一行,您可以重写它。

 foreach(var dir in DirList) { Console.Write("\r{0}% ",dir); } 

在数字后面使用空格以确保所有内容都被删除,并使用.Write代替WriteLine,因为你不想添加“\ n”

只需通过保存Console.CursorLeftConsole.CursorTop属性的值来跟踪光标的当前位置。 然后写,重置并重复。 或者更确切地说,在这种情况下,重置,写入和重复。

 Console.WriteLine("Searching file in..."); // save the current cursor position var cursorLeft = Console.CursorLeft; var cursorTop = Console.CursorTop; // build a format string to establish the maximum width do display var maxWidth = 60; var fmt = String.Format("{{0,-{0}}}", maxWidth); foreach (var dir in dirList) { // restore the cursor position Console.SetCursorPosition(cursorLeft, cursorTop); // trim the name if necessary var name = Path.GetFileName(dir); if (name.Length > maxWidth) name = name.Substring(0, maxWidth); // write the trimmed name Console.Write(fmt, name); // do some work } Console.WriteLine(); // end the previous line 

虽然这是一篇相当古老的post,但我会发布我的方法。 也许这会对某人有所帮助

 Console.SetCursorPosition(0, Console.CursorTop); Console.Write(new String(' ', Console.WindowWidth)); Console.SetCursorPosition(0, Console.CursorTop); Console.Write(dir); 

我想这就是你想要的;)

 Console.WriteLine("Searching file in..."); foreach(var dir in DirList) { Console.Write(\"r" + dir); } 

这将做我认为你要求的:

 string s = "\r"; s += new string(' ', Console.CursorLeft); s += "\r"; Console.Write(s); 

基本上与@digEmAll建议相同,但它使用实际的#cars而不是Console.WindowWidth