WPF (4.0) で RichTextBox を使用し、GetPositionAtOffset() メソッドを使用して、RichTextBox のコンテンツ内の 2 つの位置の間のテキスト範囲を取得します。
1) MyRichTextBox.Document.ContentStart からテキスト ポインターの「位置」を初期化します。
TextPointer position = RTBEditor.Document.ContentStart;
2) RichTextBox から次のようにテキストを取得します。
var textRun = new TextRange(RTBEditor.Document.ContentStart, RTBEditor.Document.ContentEnd).Text;
3) Regex を使用して、textRun で必要な文字列を見つけ、開始のインデックスと終了のインデックスを取得します (「/*」と「*/」の間のテキストを検索します)。
Regex regex = new Regex(@"/\*([^\*/])*\*/");
var match = regex.Match(textRun);
TextPointer start = position.GetPositionAtOffset(matchBegin.Index, LogicalDirection.Forward);
TextPointer end = position.GetPositionAtOffset(matchBegin.Index + matchBegin.Length, LogicalDirection.Backward);
しかし、これらのポインターをテキスト範囲で使用して内部のテキストを色付けすると、RichTextBox で色付けされた正規表現 (商品インデックスを使用) に一致する適切なテキストではありません。
GetPositionAtOffset() メソッドが指定されたインデックスの位置を与えないのはなぜですか? それはこの方法の問題ですか、それとも他の場所ですか?
返信ありがとうございます。開発が止まっています。