色付きのテキストに RichTextBox を使用しています。テキストのさまざまな部分にさまざまな色を使用したいとしましょう。これは今のところうまくいっています。
現在、RichTextBox の SelectionStart プロパティに問題があります。RichTextBox の Text プロパティにテキストを設定しました。テキストに\r\n\r\n
SelectionStart Position が含まれている場合、文字の位置と割り当てられた文字列が一致しません。
小さな例 (WinformsApplication.RichTextBox を含むフォーム):
public Form1()
{
InitializeComponent();
String sentence1 = "This is the first sentence.";
String sentence2 = "This is the second sentence";
String text = sentence1 + "\r\n\r\n" + sentence2;
int start1 = text.IndexOf(sentence1);
int start2 = text.IndexOf(sentence2);
this.richTextBox1.Text = text;
String subString1 = text.Substring(start1, sentence1.Length);
String subString2 = text.Substring(start2, sentence2.Length);
bool match1 = (sentence1 == subString1); // true
bool match2 = (sentence2 == subString2); // true
this.richTextBox1.SelectionStart = start1;
this.richTextBox1.SelectionLength = sentence1.Length;
this.richTextBox1.SelectionColor = Color.Red;
this.richTextBox1.SelectionStart = start2;
this.richTextBox1.SelectionLength = sentence2.Length;
this.richTextBox1.SelectionColor = Color.Blue;
}
RichTextBox は次のようになります。
ご覧のとおり、2 番目の文の最初の 2 文字は色付けされていません。これは、 によって生成されたオフセットの結果です\r\n\r\n
。
これの理由は何ですか?テキストの色付けに別のコントロールを使用する必要がありますか? 信頼できる方法で問題を解決するにはどうすればよいですか? "\r\n\r\n"
をString.Empty に置き換えてみましたが、他のオフセットの問題が発生します。