[C#] TextBoxの文字色を変更する方法

C#でTextBoxの文字色を変更するには、TextBoxコントロールのForeColorプロパティを使用します。

例えば、赤色に変更したい場合は、textBox1.ForeColor = System.Drawing.Color.Red;のように設定します。

このプロパティはSystem.Drawing.Colorクラスを使用して色を指定でき、RGB値や既定の色名を利用してカスタマイズが可能です。

これにより、ユーザーインターフェースの見た目を柔軟に調整できます。

この記事でわかること
  • TextBoxの文字色変更方法
  • カスタムカラーの作成手法
  • ユーザー入力に応じた色変更
  • フォーム全体のデザイン統一

目次から探す

文字色を変更する方法

C#のWindowsフォームアプリケーションにおいて、TextBoxの文字色を変更する方法について解説します。

文字色を変更することで、ユーザーインターフェースをより魅力的にすることができます。

以下に、具体的な方法を示します。

ForeColorプロパティの使い方

TextBoxの文字色を変更する最も簡単な方法は、ForeColorプロパティを使用することです。

このプロパティに色を指定することで、TextBox内の文字の色を変更できます。

以下はそのサンプルコードです。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // TextBoxの文字色を青に設定
        textBox1.ForeColor = System.Drawing.Color.Blue; 
    }
}

このコードを実行すると、textBox1の文字色が青に変更されます。

System.Drawing.Colorクラスの利用

System.Drawing.Colorクラスを使用することで、さまざまな色を簡単に指定できます。

このクラスには、あらかじめ定義された色が多数用意されています。

以下は、いくつかの色を指定する例です。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // TextBoxの文字色を赤、緑、青に設定
        textBox1.ForeColor = System.Drawing.Color.Red; // 赤
        textBox2.ForeColor = System.Drawing.Color.Green; // 緑
        textBox3.ForeColor = System.Drawing.Color.Blue; // 青
    }
}

このコードを実行すると、textBox1は赤、textBox2は緑、textBox3は青の文字色になります。

RGB値での色指定方法

System.Drawing.Colorクラスでは、RGB値を使用して色を指定することも可能です。

RGB値はそれぞれの色の強さを0から255の範囲で指定します。

以下は、RGB値を使った色の指定方法です。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // RGB値を使ってTextBoxの文字色を設定
        textBox1.ForeColor = System.Drawing.Color.FromArgb(255, 0, 0); // 赤
        textBox2.ForeColor = System.Drawing.Color.FromArgb(0, 255, 0); // 緑
        textBox3.ForeColor = System.Drawing.Color.FromArgb(0, 0, 255); // 青
    }
}

このコードを実行すると、textBox1は赤、textBox2は緑、textBox3は青の文字色になります。

RGB値を使うことで、より細かい色の指定が可能です。

実装例

ここでは、C#のWindowsフォームアプリケーションにおけるTextBoxの文字色変更の具体的な実装例を紹介します。

単一のTextBoxの文字色変更から、複数のTextBoxの一括変更、条件に応じた動的変更まで、さまざまなシナリオを見ていきます。

単一のTextBoxの文字色変更

まずは、単一のTextBoxの文字色を変更する基本的な方法を示します。

以下のサンプルコードでは、textBox1の文字色を赤に設定しています。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 単一のTextBoxの文字色を赤に設定
        textBox1.ForeColor = System.Drawing.Color.Red; 
    }
}

このコードを実行すると、textBox1の文字色が赤に変更されます。

シンプルで直感的な方法です。

複数のTextBoxの文字色を一括変更

複数のTextBoxの文字色を一括で変更する場合、ループを使用することが便利です。

以下のサンプルコードでは、textBox1からtextBox3までの文字色を一括で青に設定しています。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 複数のTextBoxの文字色を一括で青に設定
        TextBox[] textBoxes = { textBox1, textBox2, textBox3 };
        
        foreach (TextBox textBox in textBoxes)
        {
            textBox.ForeColor = System.Drawing.Color.Blue; 
        }
    }
}

このコードを実行すると、textBox1textBox2textBox3の文字色がすべて青に変更されます。

条件に応じた文字色の動的変更

条件に応じてTextBoxの文字色を動的に変更することも可能です。

以下のサンプルコードでは、ユーザーがTextBoxに入力した文字列の長さに応じて文字色を変更しています。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // TextBoxのTextChangedイベントにハンドラを追加
        textBox1.TextChanged += new EventHandler(TextBox1_TextChanged);
    }
    private void TextBox1_TextChanged(object sender, EventArgs e)
    {
        // 入力文字列の長さに応じて文字色を変更
        if (textBox1.Text.Length < 5)
        {
            textBox1.ForeColor = System.Drawing.Color.Red; // 5文字未満は赤
        }
        else
        {
            textBox1.ForeColor = System.Drawing.Color.Green; // 5文字以上は緑
        }
    }
}

このコードを実行すると、textBox1に入力された文字列の長さが5文字未満の場合は赤、5文字以上の場合は緑の文字色に変更されます。

ユーザーの入力に応じて動的に色を変えることで、視覚的なフィードバックを提供できます。

応用例

C#のWindowsフォームアプリケーションにおけるTextBoxの文字色変更の応用例を紹介します。

これにより、ユーザーインターフェースをより魅力的で使いやすくすることができます。

以下では、テーマに基づくUIのカスタマイズ、ユーザー入力に応じた色の変更、フォーム全体のデザイン統一について解説します。

テーマに基づくUIのカスタマイズ

アプリケーションのテーマに基づいてUIをカスタマイズすることで、統一感のあるデザインを実現できます。

以下のサンプルコードでは、ダークテーマとライトテーマを切り替える機能を実装しています。

using System.Windows.Forms;
using System;

partial class MyForm : Form
{
	private bool isDarkTheme = true; // テーマの状態を管理
	public MyForm()
	{
		InitializeComponent();
		UpdateTheme(); // 初期テーマの設定
	}
	private void UpdateTheme()
	{
		if (isDarkTheme)
		{
			textBox1.BackColor = System.Drawing.Color.Black; // 背景色を黒に
			textBox1.ForeColor = System.Drawing.Color.White; // 文字色を白に
		}
		else
		{
			textBox1.BackColor = System.Drawing.Color.White; // 背景色を白に
			textBox1.ForeColor = System.Drawing.Color.Black; // 文字色を黒に
		}
	}
	private void ToggleThemeButton_Click(object sender, EventArgs e)
	{
		isDarkTheme = !isDarkTheme; // テーマを切り替え
		UpdateTheme(); // テーマを更新
	}
}

このコードを実行すると、ボタンをクリックすることでダークテーマとライトテーマを切り替えることができます。

ユーザー入力に応じた色の変更

ユーザーの入力内容に応じてTextBoxの文字色を変更することで、リアルタイムでフィードバックを提供できます。

以下のサンプルコードでは、ユーザーが特定のキーワードを入力した場合に文字色を変更しています。

using System.Windows.Forms;
using System;

partial class MyForm : Form
{
	public MyForm()
	{
		InitializeComponent();
		textBox1.TextChanged += new EventHandler(TextBox1_TextChanged); // イベントハンドラの追加
	}
	private void TextBox1_TextChanged(object sender, EventArgs e)
	{
		// 特定のキーワードに応じて文字色を変更
		if (textBox1.Text.Contains("重要"))
		{
			textBox1.ForeColor = System.Drawing.Color.Red; // "重要"が含まれる場合は赤
		}
		else
		{
			textBox1.ForeColor = System.Drawing.Color.Black; // 含まれない場合は黒
		}
	}
}

このコードを実行すると、textBox1に「重要」という文字が含まれると文字色が赤に変わります。

ユーザーに対して重要な情報を強調することができます。

フォーム全体のデザイン統一

アプリケーション全体のデザインを統一するために、すべてのTextBoxの文字色や背景色を一括で設定することができます。

以下のサンプルコードでは、フォーム内のすべてのTextBoxのデザインを統一しています。

using System.Windows.Forms;

partial class MyForm : Form
{
	public MyForm()
	{
		InitializeComponent();
		SetUniformDesign(); // デザインの統一
	}
	private void SetUniformDesign()
	{
		// フォーム内のすべてのTextBoxのデザインを統一
		foreach (Control control in this.Controls)
		{
			if (control is TextBox textBox)
			{
				textBox.ForeColor = System.Drawing.Color.Blue; // 文字色を青に
				textBox.BackColor = System.Drawing.Color.LightGray; // 背景色を薄いグレーに
			}
		}
	}
}

このコードを実行すると、フォーム内のすべてのTextBoxの文字色が青、背景色が薄いグレーに統一されます。

これにより、アプリケーション全体のデザインが一貫性を持つようになります。

よくある質問

文字色が変更されないのはなぜ?

文字色が変更されない場合、以下のような原因が考えられます。

  • プロパティの設定ミス: ForeColorプロパティが正しく設定されていない可能性があります。

コードを再確認してください。

  • イベントの未設定: TextBoxのTextChangedイベントなど、動的に色を変更するためのイベントが正しく設定されていない場合、期待通りに動作しません。
  • 他のスタイル設定: フォームやTextBoxの他のスタイル設定(例えば、ReadOnlyプロパティがtrueになっている場合)によって、文字色が変更されないことがあります。

色の変更が反映されるタイミングは?

色の変更が反映されるタイミングは、以下のような状況によります。

  • プロパティ設定直後: ForeColorプロパティを設定した直後に、TextBoxの表示が更新されます。
  • イベント発生時: TextChangedLeaveなどのイベントが発生した際に、色の変更が反映されます。
  • 再描画時: フォームやコントロールが再描画されるタイミングでも、色の変更が反映されます。

例えば、ウィンドウが最小化から復元されたときなどです。

他のプロパティと競合することはある?

はい、他のプロパティと競合することがあります。

以下の点に注意してください。

  • ReadOnlyプロパティ: TextBoxがReadOnlyに設定されている場合、文字色が変更されないことがあります。
  • Enabledプロパティ: TextBoxが無効Enabledfalseになっていると、文字色の変更が反映されないことがあります。
  • スタイル設定: フォーム全体のスタイルやテーマ設定が、個々のTextBoxのプロパティに影響を与えることがあります。

特に、全体のテーマが適用されている場合、個別の設定が無視されることがあります。

まとめ

この記事では、C#のWindowsフォームアプリケーションにおけるTextBoxの文字色変更に関するさまざまな方法と応用例について解説しました。

具体的には、ForeColorプロパティの利用やカスタムカラーの作成、ユーザー入力に応じた動的な色変更など、多様なアプローチを紹介しました。

これらの知識を活用して、より魅力的で使いやすいユーザーインターフェースを作成してみてください。

  • URLをコピーしました!
目次から探す