Yanıtlar:
Evet. Bu makaleye bakın . İşte oradan bir örnek:
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();
}
}
Buradan alındı .
Yukarıdaki yorumların her ikisi de sağlam yanıtlardır, ancak konuların güvenli olmadığını unutmayın. Konsola birden çok iş parçacığıyla yazıyorsanız, renkleri değiştirmek bazı garip görünümlü çıktılar oluşturabilecek bir yarış durumu ekleyecektir. Ancak düzeltmek kolaydır:
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();
}
}
}
Write
çağrı olacak değil bozulabilir. Bkz. Stackoverflow.com/questions/4812508/… . Sadece "güvenli" olmayan yazma çağrılarının sırası.
Ben oluşturduk küçük eklentisi (geçerli Nuget Eklemek sağlar) herhangi (sizin terminali tarafından destekleniyorsa) klasik çözümlere sınırlamaları olmadan, konsol çıkış rengini.
String
Nesneyi genişleterek çalışır ve sözdizimi çok basittir:
"colorize me".Pastel("#1E90FF");
Hem ön plan hem de arka plan renkleri desteklenir.
Evet, kolay ve makul. İlk varsayılan renkleri tanımlayın.
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()
yeni konsol renkleri ayarlamak önemlidir. Bu adımı gerçekleştirmezseniz, değer istendiğinde birleştirilmiş renkleri görebilirsiniz Console.ReadLine()
.
Ardından her baskıdaki renkleri değiştirebilirsiniz:
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");
Programınızı tamamladığınızda, bittikten sonra konsol renklerini sıfırlamayı unutmayın:
Console.ResetColor();
Console.Clear();
Artık netcore ile, Kullanıcı deneyimini "korumak" istiyorsanız, terminalin her bir İşletim Sisteminde farklı renkleri olduğu için başka bir sorunumuz var.
Metin Biçimi: renkler, hizalama ve çok daha fazlası ile bu sorunu çözen bir kütüphane yapıyorum. Kullanmaktan ve katkıda bulunmaktan çekinmeyin.
https://github.com/deinsoftware/colorify/ ve NuGet paketi olarak da mevcut
Yukarıdaki tüm cevapları eklemek için Console.WriteLine
: aynı metin satırındaki rengi değiştirmek için, örneğin şunu yazın:
Console.Write("This test ");
Console.BackgroundColor = bTestSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine((bTestSuccess ? "PASSED" : "FAILED"));
Console.ResetColor();
Evet, aşağıdaki gibi mümkündür. Bu renkler, kırmızı renkte vb. Bazı hataları görüntülemek için bir konsol uygulamasında kullanılabilir ...
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
İşte satır içi renk değişiklikleriyle konsol mesajları yazmak için yazdığım basit bir yöntem. Sadece bir rengi destekliyor, ama ihtiyaçlarıma uyuyor.
// 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();
}