2

WPF RichTextBox で選択したトークンにフォーマットを適用しています。これを行うには、強調表示したいトークンを含む TextRange を取得します。次に、次のようにテキストの色を変更します。

// Get start and end pointer for token
TextPointer startPointer = run.ContentStart.GetPositionAtOffset(startOffset);
TextPointer endPointer = run.ContentStart.GetPositionAtOffset(endOffset);

// Get text range for token
TextRange textRange = new TextRange(startPointer, endPointer);

// Highlight token
textRange.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue);

これは、RichTextBox の TextChanged イベントで発生しています。

書式設定は期待どおりに適用されますが、テキストの入力を続けると、隣接する単語に既に適用されている書式設定が新しいテキストに継承されます。RichTextBox プロパティで定義されている既定の書式設定オプションを使用して、新しいテキストの書式設定を行いたいと考えています。これは可能ですか?

または、デフォルトの書式設定オプションを使用して青色にしたくないすべてのトークンを強調表示することもできますが、これは私には厄介です。

4

1 に答える 1

3

それは標準的な動作ではありませんか?Word でテキストを強調表示して太字にし、そのテキストの横にカーソルを移動して入力すると、新しいテキストも太字になります。MS は、リッチ テキスト ボックスを Word のテキスト エリアと同じように機能させたと思います。

構文の強調表示など、いくつかの基準に一致するトークンを選択している場合、カーソルがトークンから 1 文字離れた後にテキストにスタイルを適用してみてください。例えば:

いくつかのトークン |

それ以外の

いくつかのトークン|

|カーソルはどこですか。最初の例では、カーソルはトークンからスペースで区切られているため、プログラムが見つかった場合、 (スペース) の前から(スペース) の前SomeTokenまでのテキスト範囲が取得されます。その場合、新しく入力されたテキストにはスタイルが適用されないと思います。S

これは単なる推測であることを認めます。問題の説明から正確な状況を誤解している可能性があります。TextChanged特にあなたが言及したイベント、またはテキスト範囲を作成するコードなど、さらにいくつかのコードが役立つ場合があります。

于 2010-04-05T11:21:34.203 に答える