2012-02-27 54 views
2

說我有一個WPFRichTextBox具有以下內容:的RichTextBox:查找對應的指數

Hello Hello // <== here is a line break \r\n 
Turn Your Radio On! 

然後我用下面的代碼讀取框中的文本:

public static string GetText(this RichTextBox box) 
{ 
    var range = new TextRange(box.Document.ContentStart, 
          box.Document.ContentEnd); 

    return range.Text; 
} 

之後我找回var index = text.IndexOf("Hello\r\nTurn")var length = "Hello\r\nTurn".Length
基於indexlength如何在RichTextBox中選擇該文本?普通字符串中的index/lengthRichTextBox預期的內容不匹配。

我試圖從answer here的方法,但如果文本包含換行/段落,這似乎不工作。

注:我的字符串操作(查找index/length)是大大高於這個例子更復雜,但在這裏給出的例子說明我的問題以及

+0

我試圖GetPositionAtOffset,這是沒有任何幫助。 – Paparazzi 2012-02-27 23:30:36

+0

@ H.B。我在標題中添加了WPF,以表明它不*關於WinForms RichTextBox。這是不是很沮喪? – yas4891 2012-02-28 05:24:36

+0

@ yas4891:是的,因爲我們有標籤部分。人們通常在做出假設之前檢查標籤,特別是如果它不明顯。 (你甚至在第一句話中提到了WPF,所以它應該很清楚) – 2012-02-28 05:28:33

回答

0

RichTextBox的有,你可以調用一個選擇物業公司「選擇「方法。 它接受2個TextPointer對象,一個用於選擇開始,另一個用於結束。

http://msdn.microsoft.com/en-us/library/system.windows.documents.textrange.select.aspx

我不認爲你的索引和長度屬性就可以了你選擇的文本。你將不得不得到真正的TextPointer。

嘗試使用方法查找特定的詞TextPointers如在這裏指定的一個 -

http://blogs.microsoft.co.il/blogs/tamir/archive/2006/12/14/RichTextBox-syntax-highlighting.aspx