2016-11-20 44 views
8

因此,我有一個RichTextBox(如下所示),它具有等寬字體,並且每行上必須具有相同數量的字符。這樣做需要在輸入框的字符串中的每個x字符後面插入一個\n換行符。使用TextPointers選擇時不要突出顯示換行符

我也有一個算法,允許光標隨箭頭鍵移動,在移動時選擇單個字符。當光標覆蓋框中的單詞時,它應該突出顯示整個單詞。

問題:當一個單詞跨越多行時,第一行的最後一個字符後面會出現一個空格,我認爲這是由\n字符引起的。

如何讓RichTextBox.Selection.Select()不突出顯示這些空格?解析時我可以去掉字符的選擇等,但我需要能夠不突出顯示這個空白。

編輯:一個可以接受的選擇是使換行不必要。如在,以某種方式修復RichTextBox,以便它每行上總是有12個字符,但這不是理想的,因爲我想保持調整窗口的大小很容易。

更新:似乎減少XAML中的文本列的寬度減少了突出邊緣的大小,但並未完全消除。我不能減少寬度而不會導致文字換行。

Example of Problem

+0

我看到一個主要問題,這些新線(回車):你怎麼知道某個特定回車是有限制輸出長度,你需要跨越的選擇下一個行,還是隻是文本的一部分的回車,在這種情況下,您可能不會突出顯示? –

+0

在將文本裝入文本框之前,是否將原始文本中的回車符和換行符分開? –

+0

不,沒有。原文是一個連續的字符串。我每12個字符附加一個'\ r'。 – Airhead

回答

4

我已經想通了,這個問題沒有具體涉及到\n字符。

我還不能完全確定什麼原因引起的,但我固定它是這樣的:

玩耍,並注意到,改變列的寬度,對壞的高亮區域的寬度的效果後,我試圖減少它。問題是,這導致文字換行。

所以我想,好吧,我只是禁用WordWrap爲RichTextBox,對吧?錯誤。 WPF不允許我們禁用它。

我需要一種方法來達到禁用WordWrap的效果,所以在做了一些閱讀後,我發現我可以將FlowDocumentWidth屬性設置爲非常大的數字,以便文本永遠不會換行。即使要做到這一點,我也必須去禁用滾動條。

那麼,我已經禁用了wordwrap的效果,並且我能夠繼續減小RichTextBox的寬度,直到不良空間不可見爲止(如果沒有消失)。

所以,問題解決了,但我還剩下一個問題:爲什麼微軟恨我?

+0

Windows的行結束符爲'\ r \ n',而不是'\ r'而不是'\ n',您應該使用'Environment.NewLine'來打破這個詞。沒有人討厭你,你從沒有創造任何問題 – VMAtm

+0

我可以證實,如果我同時使用這兩個字符,問題仍然存在。那是我最初使用的。 – Airhead

-1

你可以嘗試用'\ n'來分割單詞嗎?然後遍歷每個拆分並將其傳遞給RichTextBox.Selection.Select()。

類似的東西來this

相關問題