ホームページ > バックエンド開発 > C++ > C# で RichTextBox 内のテキスト セグメントを色分けするにはどうすればよいですか?

C# で RichTextBox 内のテキスト セグメントを色分けするにはどうすればよいですか?

DDD
リリース: 2025-01-25 17:17:09
オリジナル
1024 人が閲覧しました

How Can I Color-Code Text Segments Within a RichTextBox in C#?

C# の RichTextBox のテキスト セグメントに色を付ける

RichTextBox の機能は、文字列のさまざまな部分を選択的に色付けし、視覚的な魅力と明瞭さを追加することで強化できます。この質問は、文字列をセグメントに分割し、RichTextBox に追加する前に各セグメントに一意の色を割り当てることでこれを達成することを目的としています。

拡張テキスト追加のための拡張メソッド

このタスクを容易にするために、AppendText という名前の拡張メソッドが導入されました。追加の色パラメータを受け入れ、開発者が追加のテキストの色を指定できるようにします。次のコードは、このメソッドの実装を示しています:

<code class="language-csharp">public static class RichTextBoxExtensions
{
    public static void AppendText(this RichTextBox box, string text, Color color)
    {
        box.SelectionStart = box.TextLength;
        box.SelectionLength = 0;

        box.SelectionColor = color;
        box.AppendText(text);
        box.SelectionColor = box.ForeColor; //重置颜色
    }
}</code>
ログイン後にコピー

実際の応用

この拡張機能を利用するために、開発者は各セグメントに必要な色を指定し、そのセグメントを RichTextBox に追加できます。たとえば、必要な文字列が「[9:23pm] User: my message here.」、タイムスタンプの色が赤、「User」が緑、メッセージの色が青の場合、次のコードは使用法を示します。

<code class="language-csharp">var userid = "USER0001";
var message = "Access denied";
var box = new RichTextBox
{
    Dock = DockStyle.Fill,
    Font = new Font("Courier New", 10)
};

box.AppendText("[" + DateTime.Now.ToShortTimeString() + "]", Color.Red);
box.AppendText(" ");
box.AppendText(userid, Color.Green);
box.AppendText(": ");
box.AppendText(message, Color.Blue);
box.AppendText(Environment.NewLine);

new Form { Controls = { box } }.ShowDialog();</code>
ログイン後にコピー

ちらつきの問題を解決する

提供された回答で述べたように、大量のメッセージを出力すると、RichTextBox がちらつく可能性があります。これを軽減するには、RichTextBox のパフォーマンスを最適化する方法について、回答で説明されている C# コーナーの記事を参照してください。

以上がC# で RichTextBox 内のテキスト セグメントを色分けするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート