3

RichTextBox2 人の人物間の会話を表すダイナミック フロー ドキュメントが表示されています。

キャレットが現在アクティブな既存の段落の後に (タブ キーを使用して) 段落を追加する機能をソフトウェアに追加しようとしています。挿入はできましたが、バグが 1 つ残っています。新しく作成した段落の先頭にキャレットの位置を設定できません。新しく作成された段落に集中しようとしましたが、うまくいきませんでした。

これは、正しい場所に新しい段落を追加する、タブが押されたイベントのテスト コードです。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);
    }
}
4

1 に答える 1

2

調査といくつかの試行錯誤の後、マウスキャレットを新しく作成された段落の先頭に配置する次のコードを使用して、最後のバグを解決することができました。これが他の人を助けることを願っています

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

if (moveTo != null)    
{   
    myRichTextBox.CaretPosition = moveTo;    
}
于 2012-07-12T15:32:40.617 に答える