2009-09-04 6 views
27

Mam aplikację konsolową, która wykonuje długi proces.pokazujący procent w aplikacji konsoli .net

Drukuję procentowy wynik w nowej linii, za każdy 1% kompletny.

Jak mogę, aby program wydrukował procent ukończenia w tej samej lokalizacji w oknie konsoli?

+0

Zobacz również ten związany pytanie: http://stackoverflow.com/questions/888533/how-can-i-update-the-current-line-in-ac-windows -console-app –

+0

Myślę, że metoda backspace jest prawdopodobnie najładniejsza (i najbardziej przenośna), choć wymagałoby nieco więcej pracy. –

Odpowiedz

66

Drukuj \r wrócić do początku linii (ale nie wydrukować przełamane!)

Na przykład:

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

Tak, to jest najprostszy sposób to zrobić. Upewnij się, że (jeśli używasz go dla ciągów o zmiennej długości), które pamiętasz, aby zastąpić spacjami na końcu linii. na przykład zastępując "ukończone 99%" przez "Gotowe!" wyświetli wiersz "Gotowe!" - nie jest idealny. :) – ZombieSheep

+0

Masz jeden błąd: P –

+0

Jon Skeet: Przepraszam, wygląda na to, że przepełnienie stosu nie pozwala mi na prawidłowe wycofywanie ronnies do twojego postu. Proszę sam spróbować. –

16

może użyć:

Console.SetCursorPosition(); 

Aby odpowiednio ustawić pozycję.

tak:

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