2016-11-20 9 views
8

したがって、RichTextBox(以下に示す)はモノスペースのフォントを持ち、各行に同じ文字数を持つ必要があります。これを行うには、ボックスに入力する文字列にx文字ごとに改行文字を\n文字挿入する必要があります。TextPointersで選択するときに改行文字をハイライト表示しない

また、矢印キーを押しながらカーソルを移動し、移動する個々の文字を選択するアルゴリズムもあります。カーソルがボックス内の単語をカバーしているときは、単語全体を強調表示する必要があります。

問題:単語が複数の行にまたがる場合、最初の行の最後の文字の後に空白があります。これは\n文字に起因すると想定しています。

RichTextBox.Selection.Select()にこれらの空白をハイライト表示させないようにするにはどうすればよいですか?私はパースなどの文字の選択を削除することができますが、私はこの空白を強調表示できないようにする必要があります。

編集:受け入れ可能な代替案は、改行を不必要にすることです。同様に、RichTextBoxを修正して、各行に常に12文字ずつ書いていますが、これは理想的ではありません。なぜなら、ウィンドウのサイズを変更しやすくしたいからです。

UPDATE:XAML内のテキスト列の幅を小さくすると、エッジを越えるハイライトのサイズは小さくなりますが、完全に削除されていないようです。テキストを折り返さずに幅を減らすことはできません。

Example of Problem

+0

に似た何か、私はこれらの新しい行(改行)と1つの元本の問題を参照してください:どのようにあなたが特定のキャリッジリターンは、出力長さを制限することがあることを知って、あなたは、次の選択をまたがるする必要がありますそれともテキストの一部にすぎないキャリッジリターンですか?その場合は、ハイライトにまたがることはありませんか? –

+0

キャリッジリターンと改行を元のテキストから外してからテキストボックスに挿入しますか? –

+0

いいえありません。元のテキストは連続した1つの文字列です。私は12文字ごとに '\ r'を追加します。 – Airhead

答えて

4

私はこの問題を具体的に\n文字に関連していないことを考え出しました。

私はまだそれの原因を完全にわからないんだけど、私はこのようにそれを修正:、遊んで、列の幅を変更することが悪いハイライト領域の幅に影響を与えたことに気付いた後

私はそれを減らそうとしました。問題は、これがテキストを折り返すことになりました。

だから、わかりました。大丈夫、RichTextBoxのワードラップを無効にします。違う。 WPFではこれを無効にすることはできません。

WordWrapを無効にする方法を必要としたので、読んだ後に、FlowDocumentのプロパティを非常に大きな値に設定して、テキストが折り返されないようにすることができました。これを行うにしても、スクロールバーを無効にする必要がありました。

それで、ワードラップが無効になってしまいましたが、残っていないと、無効なスペースが見えなくなるまで、RichTextBoxの幅を引き続き減らすことができました。

問題は解決しましたが、私には依然として1つの質問が残っています。なぜマイクロソフトは私を嫌うのですか?

+0

Windowsは '\ r \ n'ではなく' \ r \ nではなく '\ r \ nとして行末を持っていますので、' Environment.NewLine'を使用して行間で単語を分割する必要があります。誰もあなたを憎んでいない、あなたは何の問題も作らなかった – VMAtm

+0

私は両方の文字を使用する場合、問題がまだ存在することを確認することができます。それは私が元々使っていたものでした。 – Airhead

-1

「\ n」で単語を分割できますか?各分割をループし、RichTextBox.Selection.Select()に渡します。

this

関連する問題