DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

RichTextBoxで文字列の色とフォントを変更する

リッチテキストボックスで文字列が選択されている時、RichTextBox.SelectionColorプロパティの値を変更すると、選択されている文字列の色を変更することができます。また、RichTextBox.SelectionBackColorプロパティで背景色を変更できます。さらにRichTextBox.SelectionFontプロパティでフォントを変更できます。

文字列を選択する方法についてはここでは説明しませんので、「TextBox(またはRichTextBox)で選択されている文字列の取得と設定」をご覧ください。

指定した位置にある文字列の色とフォントを変更する

下の例では、リッチテキストボックス(RichTextBox1)の3文字目から5文字の色を赤、フォントを斜体に変更しています。

VB.NET
コードを隠すコードを選択
'Imports System.Drawing

'現在の選択状態を覚えておく
Dim currentSelectionStart As Integer = RichTextBox1.SelectionStart
Dim currentSelectionLength As Integer = RichTextBox1.SelectionLength

'カレットを3文字目に移動
RichTextBox1.Select(2, 0)
'斜体にするフォントを覚えておく
'文字列が選択されていると、SelectionFontがNULLを返す可能性がある
Dim baseFont As Font = RichTextBox1.SelectionFont
'5文字選択する
RichTextBox1.SelectionLength = 5

'色を赤にする
RichTextBox1.SelectionColor = Color.Red

'文字を斜体にする
'ItalicをFontStyleに追加したFontを作成する
Dim fnt As New Font(baseFont.FontFamily, _
                    baseFont.Size, _
                    baseFont.Style Or FontStyle.Italic)
'Fontを変更する
RichTextBox1.SelectionFont = fnt

baseFont.Dispose()
fnt.Dispose()

'選択状態を元に戻す
RichTextBox1.Select(currentSelectionStart, currentSelectionLength)
C#
コードを隠すコードを選択
//using System.Drawing;

//現在の選択状態を覚えておく
int currentSelectionStart = RichTextBox1.SelectionStart;
int currentSelectionLength = RichTextBox1.SelectionLength;

//カレットを3文字目に移動
RichTextBox1.Select(2, 0);
//斜体にするフォントを覚えておく
//文字列が選択されていると、SelectionFontがNULLを返す可能性がある
Font baseFont = RichTextBox1.SelectionFont;
//5文字選択する
RichTextBox1.SelectionLength = 5;

//色を赤にする
RichTextBox1.SelectionColor = Color.Red;

//文字を斜体にする
//ItalicをFontStyleに追加したFontを作成する
Font fnt = new Font(baseFont.FontFamily,
    baseFont.Size,
    baseFont.Style | FontStyle.Italic);
//Fontを変更する
RichTextBox1.SelectionFont = fnt;

baseFont.Dispose();
fnt.Dispose();

//選択状態を元に戻す
RichTextBox1.Select(currentSelectionStart, currentSelectionLength);

文字列を検索して、色とフォントを変更する

次の例では、指定された文字列(DOBON)の背景色をすべて赤くしています。

VB.NET
コードを隠すコードを選択
'Imports System.Drawing

'色を変える文字列
Dim searchWord As String = "DOBON"

'現在の選択状態を覚えておく
Dim currentSelectionStart As Integer = RichTextBox1.SelectionStart
Dim currentSelectionLength As Integer = RichTextBox1.SelectionLength

Dim pos As Integer = 0
While True
    '文字列を検索して、選択状態にする
    pos = RichTextBox1.Find(searchWord, pos, RichTextBoxFinds.None)
    If pos < 0 Then
        Exit While
    End If
    '背景色を赤にする
    RichTextBox1.SelectionBackColor = Color.Red
    pos += 1
End While
C#
コードを隠すコードを選択
//using System.Drawing;

//色を変える文字列
string searchWord = "DOBON";

//現在の選択状態を覚えておく
int currentSelectionStart = RichTextBox1.SelectionStart;
int currentSelectionLength = RichTextBox1.SelectionLength;

int pos = 0;
for (; ; )
{
    //文字列を検索して、選択状態にする
    pos = RichTextBox1.Find(searchWord, pos, RichTextBoxFinds.None);
    if (pos < 0)
    {
        break;
    }
    //背景色を赤にする
    RichTextBox1.SelectionBackColor = Color.Red;
    pos++;
}

//選択状態を元に戻す
RichTextBox1.Select(currentSelectionStart, currentSelectionLength);

色とフォントを変更して、文字列を挿入する

文字列が選択されていない時にSelectionColorやSelectionFontプロパティの値を変更すると、現在のカレット位置とそれ以降に入力される文字列にその変更が適用されます。

次の例では、リッチテキストボックスの現在の位置に挿入する文字列の色を赤に、文字を太字にしています。

VB.NET
コードを隠すコードを選択
'Imports System.Drawing

'選択状態を解除しておく
RichTextBox1.SelectionLength = 0

'赤にする
RichTextBox1.SelectionColor = Color.Red
'BoidをFontStyleに追加したFontを作成する
Dim baseFont As Font = RichTextBox1.SelectionFont
Dim fnt As New Font(baseFont.FontFamily, _
                    baseFont.Size, _
                    baseFont.Style Or FontStyle.Bold)
'Fontを変更する
RichTextBox1.SelectionFont = fnt
'文字列を挿入する
RichTextBox1.SelectedText = "文字列を挿入"

baseFont.Dispose()
fnt.Dispose()
C#
コードを隠すコードを選択
//using System.Drawing;

//選択状態を解除しておく
RichTextBox1.SelectionLength = 0;

//赤にする
RichTextBox1.SelectionColor = Color.Red;
//BoidをFontStyleに追加したFontを作成する
Font baseFont = RichTextBox1.SelectionFont;
Font fnt = new Font(baseFont.FontFamily,
    baseFont.Size,
    baseFont.Style | FontStyle.Bold);
//Fontを変更する
RichTextBox1.SelectionFont = fnt;
//文字列を挿入する
RichTextBox1.SelectedText = "文字列を挿入";

baseFont.Dispose();
fnt.Dispose();
  • 履歴:
  • 2013/6/13 SelectionBackColorプロパティについて追記。指定した箇所のフォントと色を変える例と、指定した文字列の色を変える例を追加。
  • 2013/10/21 章に分割。誤字修正。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • コードの先頭に記述されている「Imports ??? がソースファイルの一番上に書かれているものとする」(C#では、「using ???; がソースファイルの一番上に書かれているものとする」)の意味が分からないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。