2009-09-04 20 views
27

Ho un'app console che esegue un processo lungo.che mostra la percentuale nell'applicazione console .net

Sto stampando la percentuale completa su una nuova riga, per ogni 1% completo.

Come si può fare in modo che il programma stampi la percentuale di completamento nella stessa posizione nella finestra della console?

+0

Vedi anche questa domanda correlata: http://stackoverflow.com/questions/888533/how-can-i-update-the-current-line-in-ac-windows -console-app –

+0

Penso che il metodo backspace sia forse il più bello (e più portatile), anche se richiederebbe un po 'più di lavoro. –

risposta

66

Stampa \r per tornare al punto di partenza della linea (ma non stampa un ritorno a capo!)

Ad esempio:

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

Sì, questo è il modo più semplice per farlo. Assicurati (se lo stai usando per stringhe di lunghezza variabile) che ti ricordi di sovrascrivere con spazi alla fine delle righe. per esempio. sostituendo "99% completo" con "Fatto!" mostrerà la riga "Fatto! omesso" - non ideale. :) – ZombieSheep

+0

Hai un errore di uno: P –

+0

Jon Skeet: Mi dispiace, sembra che l'overflow dello stack non mi consenta di eseguire il rollback dei ronni sul tuo post correttamente. Per favore provalo tu stesso. –

16

si può usare:

Console.SetCursorPosition(); 

Per impostare la posizione in modo appropriato.

Come così:

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