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.CursorLeft
和Console.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