.NET TIPS

コンソール・アプリケーションで文字色や背景色を変えるには?[2.0、C#、VB]

デジタルアドバンテージ 遠藤 孝信
2010/02/25

 コンソール・アプリケーション(コマンド・プロンプト内で動作するアプリケーション)は、黒い背景色に白い文字という構成で作成されることが多いが、実際には文字単位で前景色(=文字の色)や背景色を設定可能だ。

 文字の前景色および背景色を変更するには、あらかじめConsoleクラス(System名前空間)の静的プロパティであるForegroundColorプロパティおよびBackgroundColorプロパティに色を指定しておく。指定可能な色は、ConsoleColor列挙体(System名前空間)の要素として定義されている(全16色)。そして、WriteメソッドやWriteLineメソッドを使用すれば、指定した色で文字列が出力される。

 次のサンプル・プログラムは、黄色の背景に青い文字で画面に文字列を表示する。

// ccsample1.cs

using System;

class ConsoleColorSample1 {
  static void Main() {

    Console.ForegroundColor = ConsoleColor.Blue;
    Console.BackgroundColor = ConsoleColor.Yellow;
    Console.WriteLine("前景色が青色で、背景色が黄色");

    Console.ResetColor(); // 色のリセット
  }
}

// コンパイル方法:csc ccsample1.cs
' ccsample1.vb

Imports System

Class ConsoleColorSample1
  Shared Sub Main()

    Console.ForegroundColor = ConsoleColor.Blue
    Console.BackgroundColor = ConsoleColor.Yellow
    Console.WriteLine("前景色が青色で、背景色が黄色")

    Console.ResetColor() ' 色のリセット
  End Sub
End Class

' コンパイル方法:vbc ccsample1.vb
黄色の背景に青色で文字列を表示するサンプル・プログラム(上:C#、下:VB)

 このプログラムの実行結果は次のような画面となる。


上記サンプル・プログラムの実行画面

 プログラムの最後ではConsoleクラスのResetColorメソッドを呼び出しているが、これがないとコマンド・プロンプトなどでは色の設定がプログラム終了後もそのまま残ってしまう。

すべての色の組み合わせで文字列を表示

 次のサンプル・プログラムでは、すべての前景色と背景色の組み合わせにより、文字列を表示する。

// ccsample2.cs

using System;

class ConsoleColorSample2 {
  static void Main() {

    ConsoleColor[] Colors // すべての色を列挙
      = (ConsoleColor[])Enum.GetValues(typeof(ConsoleColor));

    foreach (ConsoleColor bg in Colors) {
      foreach (ConsoleColor fg in Colors) {
        Console.ForegroundColor = fg;
        Console.BackgroundColor = bg;
        Console.WriteLine("前景色:" + fg + " / 背景色:" + bg);
      }
    }
    Console.ResetColor();
    Console.WriteLine();
  }
}
// コンパイル方法:csc ccsample2.cs
' ccsample2.vb
Imports System

Class ConsoleColorSample2
  Shared Sub Main()

    Dim Colors As ConsoleColor() _
      = DirectCast([Enum].GetValues(GetType(ConsoleColor)), _
                   ConsoleColor()) ' すべての色を列挙

    For Each bg In Colors
      For Each fg In Colors
        Console.ForegroundColor = fg
        Console.BackgroundColor = bg
        Console.WriteLine("前景色:" & fg.ToString() & _
                          " / 背景色:" & bg.ToString())
      Next
    Next
    Console.ResetColor()
    Console.WriteLine()
  End Sub

End Class

' コンパイル方法:vbc ccsample2.vb
すべての前景色と背景色で文字列を表示するサンプル・プログラム(上:C#、下:VB)

 このプログラムの実行結果は次のような画面となる。


上記サンプル・プログラムの実行画面

 このプログラムでは、すべての色(ConsoleColor列挙体の値)を取得するためにEnumクラスのGetValuesメソッドを使用しているが、これについては「TIPS:列挙体の値を列挙するには?」で解説している。End of Article

利用可能バージョン:.NET Framework 2.0以降
カテゴリ:コンソール・アプリケーション 処理対象:画面
使用ライブラリ:Consoleクラス(System名前空間)
使用ライブラリ:ConsoleColor列挙体(System名前空間)
使用ライブラリ:Enumクラス(System名前空間)
関連TIPS:列挙体の値を列挙するには?

この記事と関連性の高い別の.NET TIPS
DataGridコントロールで入力中のセルをハイライト表示するには?
Visual Studio 2012のXAMLデザイナで「色名」により色を指定するには?
HTMLカラーの色名表記と16進表記を相互に変換するには?
[ASP.NET]DataGridコントロールの各セルにアクセスするには?
[ASP.NET]DataGridコントロールで特定の行や文字を強調するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間