Domanda

Sto scrivendo un programma di console in C #.

C'è un modo posso usare un Console.Clear () per solo chiare alcune cose sullo schermo della console?

Ecco il mio problema:

Ho un logo (ho messo su schermo mediante Console.WriteLine ()) e una matrice 2D, che voglio mantenere costante e chiaro tutto al di sotto di esso.

È stato utile?

Soluzione

È possibile utilizzare un metodo personalizzato per cancellare parti dello schermo ...

static void Clear(int x, int y, int width, int height)
{
    int curTop = Console.CursorTop;
    int curLeft = Console.CursorLeft;
    for (; height > 0;)
    {
        Console.SetCursorPosition(x, y + --height);
        Console.Write(new string(' ',width));
    }
    Console.SetCursorPosition(curLeft, curTop);
}

Altri suggerimenti

Modifica : La risposta qui mostra come in grado di manipolare la console molto più forte di quanto non ero consapevole. Quello che ho scritto in origine si applica ancora, e potrebbe essere utile se non si dispone di queste strutture a disposizione, forse in una lingua diversa.


Conservare il logo e lo stato inizialmente generato dell'array e poi quando si cancella la console di scrivere i valori salvati ancora una volta, invece di usare la stessa procedura di generazione.

Come altri hanno detto, la console non è progettato per questo tipo di operazione in modo da avere a lavorare intorno ad esso.

Un'altra opzione potrebbe essere quella di scrivere a una stringa o un costruttore di stringa, anziché alla console direttamente, quindi ogni volta che la console necessita di un aggiornamento, chiaro il suo output e scrivere la vostra "uscita" stringa / ruscello alla console. Questo avrebbe permesso di eseguire operazioni sulle stringhe / espressioni regolari, ecc sul tuo testo di output per rimuovere / lasciare le cose specifiche a posto.

Tuttavia, ciò comporterebbe un sacco di console in testa, come si finirebbe per ristampare l'intera produzione su ogni aggiornamento.

Una soluzione che potrebbe essere quello di mantenere una rappresentazione di stringa / flusso parallelo di ciò che si scrive alla console, poi, quando è necessario cancellare è possibile cancellare la rappresentazione di stringa, cancellare la console, quindi scrivere la stringa fuori alla console ancora. In questo modo si potrebbe solo aggiungere un'ulteriore operazione-scrittura al tuo solito scrivere, e il principale lavoro supplementare sarebbe accadere solo quando è stata deselezionata la console.

Qualunque cosa tu faccia, scrivendo alla console non è mai un'operazione veloce, e se si sta facendo un sacco di operazioni in cui roba viene scritto nella console, può essere un peso significativo sulle prestazioni della vostra applicazione.

Si può non è chiaro e poi ri-scrivere il logo e la matrice? La console non è progettato per essere utilizzato come si descrive.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top