2012-07-11 47 views
3

我在RichTextBox中顯示了一個動態流程文檔,表示兩個人之間的對話。在流程文檔的新創建的段落上設置插入符號位置

我正在嘗試向我的軟件中添加一個功能,該功能會在插入光標當前處於活動狀態的任何現有段落之後添加一段(使用Tab鍵)。我能夠實現插入,但仍然存在一個錯誤,我無法將插入位置設置爲新創建的段落的開頭。我試圖專注於新創建的段落,但沒有運氣。

這裏是一些測試代碼,用於tab按下的事件,它在正確的位置添加了新的段落。 ConversationXContent是一個FlowDocument

private void RichTextBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if(e != null && e.Key == Key.Tab) 
    { 
     Paragraph p = new Paragraph(); 
     p.Tag = "NewParagraph"; 
     p.SetResourceReference(Paragraph.StyleProperty, "CharacterViewStyle"); 
     p.Inlines.Add("NEW PARAGRAPH"); 
     ConversationXContent.Blocks.InsertAfter(ConversationX.CaretPosition.Paragraph, p); 
    } 
} 
+0

你真的*不需要檢查'e'爲null。 – Adam 2012-07-11 20:39:59

回答

2

調查和一些試驗和錯誤後,我能解決我用下面的代碼放置鼠標插入符號到新創建的段落的開始最後的bug。希望這可以幫助其他人

TextPointer moveTo = ConversationX 
         .CaretPosition 
         .GetNextInsertionPosition(LogicalDirection.Forward); 

if (moveTo != null)  
{ 
    myRichTextBox.CaretPosition = moveTo;  
} 
相關問題