2009-09-04 161 views
27

我有一个控制台应用程序执行冗长的过程。在.net控制台应用程序中显示百分比

我打印出新行上的完成百分比,每完成1%

如何让程序在控制台窗口的相同位置输出完成百分比?

+0

又见此相关的问题:http://stackoverflow.com/questions/888533/how-can-i-update-the-current-line-in-ac-windows -console-app – 2009-09-04 14:27:43

+0

我认为backspace方法可能是最好的(也是最便携的),但需要稍微多些工作。 – 2009-09-04 14:35:17

回答

66

打印\r要回线的起点(但不打印一行!)

例如:

using System; 
using System.Threading; 

class Test 
{ 
    static void Main() 
    { 
     for (int i=0; i <= 100; i++) 
     { 
      Console.Write("\r{0}%", i); 
      Thread.Sleep(50); 
     } 
    } 
} 
+7

是的,这是最简单的方法。确保(如果您使用它的可变长度的字符串),你记得在行尾用空格覆盖。例如用“完成!”代替“99%完成”。将显示“完成!完成”行 - 不理想。 :) – ZombieSheep 2009-09-04 14:03:00

+0

你有一个错误:P – 2009-09-04 14:05:22

+0

乔恩Skeet:对不起,它似乎堆栈溢出不会让我回滚ronnies编辑到您的文章正确。请自行尝试。 – 2009-09-04 14:09:07

16

您可以使用:

Console.SetCursorPosition(); 

适当地设置位置。

像这样:

Console.Write("Hello : "); 
for(int k = 0; k <= 100; k++){ 
    Console.SetCursorPosition(8, 0); 
    Console.Write("{0}%", k); 
    System.Threading.Thread.Sleep(50); 
} 

Console.Read(); 
相关问题