以下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替换上一个目录
答案 0 :(得分:22)
使用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);
}
答案 1 :(得分:12)
如果您的问题是清除控制台,请使用方法Console.Clear();
,如果不是,请使用此方法覆盖最后一行;
Console.WriteLine("Searching file in...");
foreach(var dir in DirList)
{
Console.SetCursorPosition(1,0);
Console.WriteLine(dir);
}
答案 2 :(得分:10)
您可以使用“\ r”打印,这样光标不会跳过一行,您可以重写它。
foreach(var dir in DirList)
{
Console.Write("\r{0}% ",dir);
}
在数字后面使用空格以确保删除所有内容,并使用.Write而不是WriteLine 因为你不想添加“\ n”
答案 3 :(得分:6)
只需保存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
答案 4 :(得分:3)
虽然这是一篇相当古老的帖子,但我会发布我的方法。也许这会帮助某人
Console.SetCursorPosition(0, Console.CursorTop);
Console.Write(new String(' ', Console.WindowWidth));
Console.SetCursorPosition(0, Console.CursorTop);
Console.Write(dir);
答案 5 :(得分:2)
我认为这就是你想要的;)
Console.WriteLine("Searching file in...");
foreach(var dir in DirList)
{
Console.Write(\"r" + dir);
}
答案 6 :(得分:1)
这将完成您所要求的想法:
string s = "\r";
s += new string(' ', Console.CursorLeft);
s += "\r";
Console.Write(s);
与@digEmAll建议基本相同,但它使用的是实际的#chars而不是Console.WindowWidth