回答:
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();
}
}
ここから撮影。
上記のコメントはどちらもしっかりとした回答ですが、スレッドセーフではないことに注意してください。複数のスレッドでコンソールに書き込んでいる場合、色を変更すると競合状態が追加され、奇妙な出力が作成される可能性があります。ただし、修正は簡単です。
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
呼び出しは文字化けしません。stackoverflow.com/questions/4812508/…を参照してください。「安全」ではないのは、書き込み呼び出しの順序だけです。
はい、それは簡単で可能です。最初のデフォルト色を定義します。
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()
新しいコンソールの色を設定することが重要です。この手順を実行しない場合、で値を要求すると、結合された色が表示されますConsole.ReadLine()
。
次に、各プリントの色を変更できます。
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");
プログラムが終了したら、終了時にコンソールの色をリセットしてください。
Console.ResetColor();
Console.Clear();
現在、netcoreでは、ターミナルが各オペレーティングシステムで異なる色を使用しているため、ユーザーエクスペリエンスを「維持」したい場合、別の問題があります。
私は、テキスト形式でこの問題を解決するライブラリを作成しています。色、配置、その他多数。自由に使用して貢献してください。
https://github.com/deinsoftware/colorify/およびNuGetパッケージとしても利用可能
上記の回答にすべてを使用することを追加するだけですConsole.WriteLine
:同じテキスト行の色を変更するには、たとえば次のように記述します。
Console.Write("This test ");
Console.BackgroundColor = bTestSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine((bTestSuccess ? "PASSED" : "FAILED"));
Console.ResetColor();
はい、次のように可能です。これらの色をコンソールアプリケーションで使用すると、赤色などのエラーを表示できます。
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
これは、インラインの色変更を含むコンソールメッセージを書くために私が書いた簡単な方法です。1色しかサポートしませんが、私のニーズに合います。
// 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();
}