2009-09-04 1 views
27

Ich habe eine Konsolenanwendung, die einen langwierigen Prozess ausführt.zeigt Prozentsatz in .net-Konsolenanwendung

Ich drucke die Prozent abgeschlossen in einer neuen Zeile, für jede 1% abgeschlossen.

Wie kann ich veranlassen, dass das Programm die Prozent abgeschlossen an der gleichen Stelle im Konsolenfenster ausdrucken?

+0

Siehe auch diese Frage im Zusammenhang: http://stackoverflow.com/questions/888533/how-can-i-update-the-current-line-in-ac-windows -console-app –

+0

Ich denke, die Backspace-Methode ist vielleicht die netteste (und tragbarste), obwohl etwas mehr Arbeit benötigt würde. –

Antwort

66

Drucken \r bis zum Anfang der Zeile zurück (aber nicht eine neue Zeile drucken!)

Zum Beispiel:

Console.SetCursorPosition(); 

:

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

Ja, das ist der einfachste Weg, es zu tun. Stellen Sie sicher (wenn Sie es für Strings variabler Länge verwenden), dass Sie nicht vergessen, mit Leerzeichen am Ende der Zeilen zu überschreiben. z.B. Ersetzen von "99% abgeschlossen" durch "Fertig!" zeigt die Zeile "Done! omplete" - nicht ideal. :) – ZombieSheep

+0

Sie haben einen durch einen Fehler: P –

+0

Jon Skeet: Es tut mir leid, es scheint, Stack-Überlauf lässt mich Rolling Ronnies nicht auf Ihren Beitrag richtig bearbeiten. Bitte versuchen Sie es selbst. –

16

Sie verwenden können Um die Position entsprechend einzustellen.

Wie so:

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();