2013-03-14 7 views
5

Come si può cancellare una linea nella console in C#?Cancellazione di una linea nella console

so come posizionare il cursore all'inizio di una riga:

Console.SetCursorPosition(0, Console.CursorTop); 
+2

Google è il tuo amico http://msdn.microsoft.com/en-us/library/system.console.clear.aspx <- primo risultato su google, primo risultato per la riga: http://stackoverflow.com/questions/5027301/c-sharp-clear-console-last-item-and-replace-new-console-animation \ –

risposta

10

metodo più semplice sarebbe quella di spostare l'inizio della linea, come avete fatto, e poi scrivere una serie di spazi della stessa lunghezza della lunghezza della linea.

+2

Questo mi sembra avvolgere in una nuova riga. Che ne dici di Console.Write (new String ('', Console.BufferWidth - 1)) ?? –

+0

certo che lo fa ... scrive semplicemente la linea completa! In seguito, sposta su una riga. Se fai -1, lascerai un personaggio non cancellato! – Zordid

2

Una volta utilizzato l'ultimo spazio di una riga del buffer della console, il cursore della console passa automaticamente alla riga successiva.

  1. Ripristino cursore indietro all'inizio prima che raggiunga bordo della console
  2. Erase uscita vecchia console, posizionando il cursore sulla riga successiva
  3. reset cursore sulla linea che è stato appena cancellato

    while (true) 
    { 
        Console.Write("."); 
        if (Console.CursorLeft + 1 >= Console.BufferWidth) 
        { 
        Console.SetCursorPosition(0, Console.CursorTop); 
        Console.Write(Enumerable.Repeat<char>(' ', Console.BufferWidth).ToArray()); 
        Console.SetCursorPosition(0, Console.CursorTop - 1); 
        } 
    
        if (Console.KeyAvailable) 
        break; 
    } 
    
0

(combinazione at.toulan e le risposte di Andrew qui.)

più semplice è, per sovrascrivere sopra l'ultima riga:

Console.SetCursorPosition(0, Console.CursorTop - 1) 
Console.WriteLine("new line of text"); 

Se "nuova riga di testo" è più breve del testo che c'era prima, scrivere gli spazi prima di scrivere il testo, come Andrew dice.