2012-10-15 46 views
2

如果我拖動(回到前面)選擇RichTextBox中的文本,則Selection.Text與實際選擇相匹配。 但是,如果我拖動(從前到後)在同一個RichTextBox中選擇文本,則Selection.Text爲總是爲空字符串。RichTextBox Selection.Text不正確

我需要這些信息的原因是,在重新解析(這涉及清除所有文本並重新填充它)RichTextBox中的文本後,我需要將插入符號返回到原始位置。

我的目標是獲得選擇開始的偏移量。我可以使用它來獲取一個停止在那裏的字符串,我將在解析結束時使用它替換插入符號。

if (String.IsNullOrWhiteSpace(Selection.Text)) 
       restartPosition = activeRun.ContentStart.GetOffsetToPosition(CaretPosition.GetInsertionPosition(LogicalDirection.Forward)); 
      else 
       restartPosition = activeRun.ContentStart.GetOffsetToPosition(Selection.Start); 

關鍵在於'if'語句。如果沒有選擇,我可以使用文本指針指定光標所在的位置。如果有選擇,我需要它的開始。具有諷刺意味的是,如果它在另一個方向上失敗了,那就不成問題了。

有沒有一種方法來準確地檢索選擇?微軟的實施似乎有點不妥。

+0

所以明顯的問題是,我該如何解決這個問題? – Greg

+0

什麼語言和框架?例如:C#,Java,Objective-C? .Net,Android,iOS等? –

+0

WPF .Net 4.0中的C#。還要注意,這是在RichTextBox的OnPreviewKeyDown事件期間。 – Greg

回答

1

所以,它沒有被打破。更改CaretPosition會清除選擇。那就是發生了什麼事。像現在的冠軍一樣工作。