小さなコマンドラインツールを作成する場合、異なる色で出力するのが良いでしょう。これは可能ですか?
はい。これを参照してください 記事 。以下に例を示します。
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();
}
}
here から取得。
上記のコメントはどちらも堅実な回答ですが、スレッドセーフではないことに注意してください。複数のスレッドを使用してコンソールに書き込む場合、色を変更すると競合状態が追加され、奇妙な外観の出力が作成される可能性があります。ただし、簡単に修正できます。
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();
}
}
}
はい、それは簡単で可能です。最初のデフォルト色を定義します。
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();
ネットコアでは、端末が各オペレーティングシステムで異なる色を持っているため、ユーザーエクスペリエンスを「維持」する場合、別の問題が発生します。
この問題をテキスト形式で解決するライブラリを作成しています:色、配置など。気軽に使用して貢献してください。
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