Risposte:
Sì. Vedere questo articolo . Ecco un esempio da lì:
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");
class Program
{
static void Main()
{
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();
}
}
Tratto da qui .
I commenti sopra sono entrambe risposte solide, tuttavia si noti che non sono thread-safe. Se stai scrivendo sulla console con più thread, la modifica dei colori aggiungerà una condizione di competizione che può creare un output dall'aspetto strano. È semplice da risolvere però:
public class ConsoleWriter
{
private static object _MessageLock= new object();
public void WriteMessage(string message)
{
lock (_MessageLock)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.WriteLine(message);
Console.ResetColor();
}
}
}
Writechiamata non sarà confusa. Vedi stackoverflow.com/questions/4812508/… . È solo l'ordine delle chiamate di scrittura che non è "sicuro".
Ho creato un piccolo plugin (disponibile su NuGet ) che ti consente di aggiungere qualsiasi colore (se supportato dal tuo terminale) all'output della tua console, senza i limiti delle soluzioni classiche.
Funziona estendendo l' Stringoggetto e la sintassi è molto semplice:
"colorize me".Pastel("#1E90FF");
Sono supportati sia i colori di primo piano che quelli di sfondo.
Sì, è facile e possibile. Definire i primi colori predefiniti.
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()è importante per impostare i nuovi colori della console. Se non esegui questo passaggio puoi vedere i colori combinati quando chiedi i valori con Console.ReadLine().
Quindi puoi cambiare i colori su ogni stampa:
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");
Al termine del programma, ricorda di ripristinare i colori della console al termine:
Console.ResetColor();
Console.Clear();
Ora con netcore abbiamo un altro problema se si desidera "preservare" l'esperienza dell'utente perché i terminali hanno colori diversi su ciascun sistema operativo.
Sto creando una libreria che risolve questo problema con il formato testo: colori, allineamento e molto altro. Sentiti libero di usare e contribuire.
https://github.com/deinsoftware/colorify/ e disponibile anche come pacchetto NuGet
Solo per aggiungere alle risposte sopra che tutti usano Console.WriteLine: per cambiare colore sulla stessa riga di testo, scrivi ad esempio:
Console.Write("This test ");
Console.BackgroundColor = bTestSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine((bTestSuccess ? "PASSED" : "FAILED"));
Console.ResetColor();
Sì, è possibile come segue. Questi colori possono essere utilizzati in un'applicazione console per visualizzare alcuni errori in colore rosso ecc ...
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;//after this line every text will be white on blue background
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();//reset to the defoult colour
Ecco un metodo semplice che ho scritto per scrivere messaggi di console con cambi di colore in linea. Supporta solo un colore, ma si adatta alle mie esigenze.
// usage: WriteColor("This is my [message] with inline [color] changes.", ConsoleColor.Yellow);
static void WriteColor(string message, ConsoleColor color)
{
var pieces = Regex.Split(message, @"(\[[^\]]*\])");
for(int i=0;i<pieces.Length;i++)
{
string piece = pieces[i];
if (piece.StartsWith("[") && piece.EndsWith("]"))
{
Console.ForegroundColor = color;
piece = piece.Substring(1,piece.Length-2);
}
Console.Write(piece);
Console.ResetColor();
}
Console.WriteLine();
}