我想覆盖控制台中的最后一行以循环更改特定行。
例如: 我想打印到控制台 .然后..然后...
这是我的代码:
int dot = 1;
while (true)
{
switch (dot)
{
case 1:
Console.SetCursorPosition(0, Console.CursorTop-1);
Console.WriteLine(".");
dot++;
Thread.Sleep(500);
break;
case 2:
Console.SetCursorPosition(0, Console.CursorTop -1);
Console.WriteLine("..");
dot++;
Thread.Sleep(500);
break;
case 3:
Console.SetCursorPosition(0, Console.CursorTop - 1);
Console.WriteLine("...");
dot = 1;
Thread.Sleep(500);
break;
}
}
}
我的问题是,在第一个完整的回合之后(在第一次打印“...”之后)它不打印“。”控制台停留在“...”
我的意思是:
- >“。”打印
- 删除“。”并打印“..”
- 删除“..”并打印“...”
现在它保留“...”而不是删除“...”并打印“.”。
有人知道为什么吗?
最佳答案
当您打印一个点时,您只打印了一个字符 - 您不会影响该行的其余部分。
如果你只是改变这个:
Console.WriteLine(".");
到
Console.WriteLine(". ");
然后它将删除之前迭代写入的所有字符。 (不过,这仍然不会清除线路上的任何其他内容。)
(您可能希望将 Console.WriteLine("..")
更改为 Console.WriteLine(".. ")
以保持一致性,但它不会有所不同,因为您已经在上一次迭代中打印了最后一个空格。)
请注意,您也可以非常简单地删除重复:
string[] dots = { ". ", "..", "..." };
int index = 0;
while (true)
{
Console.SetCursorPosition(0, Console.CursorTop -1);
Console.WriteLine(dots[index]);
index = (index + 1) % 3;
Thread.Sleep(500);
}
关于c# - 控制台中的最后一行不会被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47628323/