- PR -

C#のリッチテキストボックス内の文字の色

1
投稿者投稿内容
tamai
会議室デビュー日: 2005/11/09
投稿数: 19
投稿日時: 2006-01-24 11:41
C#のリッチテキストボックス内の文字の色を所々変えたいのですが、
どういう風にすればよいのかわかりません。

教えてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-24 11:53
引用:

tamaiさんの書き込み (2006-01-24 11:41) より:

C#のリッチテキストボックス内の文字の色を所々変えたいのですが、
どういう風にすればよいのかわかりません。

教えてください。


SelectionColor プロパティや、Rtf プロパティについて調べてみてください。
その上でどこまでできて "何が" 判らないのかを教えてください。

とりあえず、実装しようとしているクラスのメンバはごらんになった方が良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
tamai
会議室デビュー日: 2005/11/09
投稿数: 19
投稿日時: 2006-01-24 13:02
richTextBox1.Find("Text", RichTextBoxFinds.MatchCase);

richTextBox1.SelectionColor = Color.Red;

を使っても全体の色が変わるのですが・・・
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-24 13:46
引用:

tamaiさんの書き込み (2006-01-24 13:02) より:

richTextBox1.Find("Text", RichTextBoxFinds.MatchCase);
richTextBox1.SelectionColor = Color.Red;
を使っても全体の色が変わるのですが・・・


このコードでは、Find メソッドが何かをしているわけじゃないですよね。
以下のようなコードを実装してみましょう。

コード:

    private static void MakiMakiLove() {
        const string FIND_STRING = "Text";

        int iFind = this.richTextBox1.Find(FIND_STRING, RichTextBoxFinds.MatchCase);

        this.richTextBox1.SelectionStart  = iFind;
        this.richTextBox1.SelectionLength = FIND_STRING.Length;
        this.richTextBox1.SelectionColor  = System.Drawing.Color.Red;
    }


これは、最初に見つかった "Text" の前景色を「赤」に変えるコードです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
tamai
会議室デビュー日: 2005/11/09
投稿数: 19
投稿日時: 2006-01-24 14:07
richTextBox1.AppendText(msg);
のあとに、
const string FIND_STRING = "Text";
int iFind = this.richTextBox1.Find(FIND_STRING, RichTextBoxFinds.MatchCase);
this.richTextBox1.SelectionStart = iFind;
this.richTextBox1.SelectionLength = FIND_STRING.Length;
this.richTextBox1.SelectionColor = System.Drawing.Color.Red;

を入れると、全体の色が変わります。

追加するテキスト(msg)に、Textという文字があれば、そこが赤に変わればいいのですが、
うまくいきません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-24 14:48
引用:

tamaiさんの書き込み (2006-01-24 14:07) より:

richTextBox1.AppendText(msg); のあとに、
(snip)
を入れると、全体の色が変わります。
追加するテキスト(msg)に、Textという文字があれば、そこが赤に変わればいいのですが、うまくいきません。


以下のようにしてもうまくいきました。

コード:

    private static void MakiMakiLove() {
        const string MSG         = "あいうえおTextかきくけこ";
        const string FIND_STRING = "Text";

        this.richTextBox1.Text = "[最初の文字列]";
        this.richTextBox1.AppendText(MSG);
        int iFind = this.richTextBox1.Find(FIND_STRING, RichTextBoxFinds.MatchCase);

        this.richTextBox1.SelectionStart  = iFind;
        this.richTextBox1.SelectionLength = FIND_STRING.Length;
        this.richTextBox1.SelectionColor  = System.Drawing.Color.Red;
    }


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
tamai
会議室デビュー日: 2005/11/09
投稿数: 19
投稿日時: 2006-01-24 15:05
コードのように作成すると、確かにうまくいきます。

現在作成中のプログラムでは、うまくいきません。

もう少し、考えてみます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-24 15:29
すいません、最初の投稿で嘘つきました。
Find メソッドを実行すると SelectionStart と SelectionLength が勝手に設定されるんですね。

引用:

tamaiさんの書き込み (2006-01-24 15:05) より:

コードのように作成すると、確かにうまくいきます。
現在作成中のプログラムでは、うまくいきません。


詰まったら、コードを転記してみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)