web-dev-qa-db-ja.com

WinForms RichTextBox内のテキストの色を変更する

フォームボタンをクリックするたびに文字列を書き込むRichTextBoxがあります。各ストリングは、ストリング「Long」または「Short」で始まり、改行で終わります。文字列を追加するたびに、RichTextBoxの下部に追加されます。 「Long」で始まる場合は赤、「Short」で始まる場合は青に色付けします。これどうやってするの?

30
Addie

もちろん、SelectionStart、SelectionLength、およびSelectionColorプロパティを使用してこれを行うことができます。それは非常にうまく機能します。

これらのプロパティの詳細については、 このページ をご覧ください。

選択開始プロパティを現在の長さに設定し、追加する文字列の長さを取得し、選択長を設定し、必要に応じて選択色を設定することにより、RichTextBoxテキストの長さを把握し、これに応じて色を付けることができます。追加した文字列ごとにすすぎ、繰り返します。

int length = richTextBox.TextLength;  // at end of text
richTextBox.AppendText(mystring);
richTextBox.SelectionStart = length;
richTextBox.SelectionLength = mystring.Length;
richTextBox.SelectionColor = Color.Red;

そんな感じ。それは私がそれが働いたことを覚えている方法です。

46
itsmatt

私が書いていたプログラムでこれをやっていました。 @itsmattのようなことをしていましたが、少しシンプルに感じました。 Selectioncolorを設定するだけで、その時点からRichTextBoxが他の色に変更されるまでその色になります。すべての行をテストしている場合、これはうまくいくようで、簡単です。

if(myString == "Long") 
{ 
  richTextBox.SelectionColor = Color.Red; 
}
else
{
  richTextBox.SelectionColor = Color.Green
}
richTextBox.AppendText(myString);
36
DTown