2017-12-25 21 views
0

私は、ユーザーがSfRichTextBoxAdvで選択を行い、これらの選択範囲(テキスト範囲)をコレクションに保存しようとしています。また、テキスト範囲がテキストの前に追加または削除されたときに、テキスト範囲の開始位置と終了位置を更新することも必要です。テキストがテキスト範囲の前に追加されて前方にプッシュされた場合、それに応じて開始/終了インデックスを増やす必要があります。Syncfusion SfRichTextBoxAdv - WPF TextRange機能の複製?

通常のWPF RichTextBoxでは、これをTextRangeを使用して行うことができました。 TextRangeでは、選択したテキストをTextRange変数として保存できます。次に、テキストがTextRangeの前に追加され、ドキュメント内で前方にプッシュされると、開始および終了のTextPointerプロパティがそれに応じて変更されます。

SfRichTextBoxAdvを使用して、選択したテキストをSelectionAdv変数として保存すると、ドキュメント内のカーソルが現在のカーソル位置(現在の選択)に移動するたびに変数が更新されます。だから私は変数を選択することもできません、カーソルがドキュメント内を移動すると常に変化するためです。

var start = richTextBoxAdv.Selection.Start; 
var end = richTextBoxAdv.Selection.End; 

をしかし、カーソルがちょうどSelectionAdvのように移動したとき、彼らはまだ自分自身をアップデート:私は2つのTextPosition変数を使用して選択を保存しようとしました。

答えて

0

Syncfusion製品をご利用いただき、ありがとうございます。

SfRichTextBoxAdvコントロールでは、 'SelectionAdv'の 'Start'および 'End'プロパティは、現在のカーソル位置を示します。したがって、カーソルが移動するたびに自動的に更新されます。ただし、文字列を返す 'TextPosition'クラスの 'GetHierarchicalIndex'プロパティを使用して、現在のテキスト位置を保存することができます。後で、 'DocumentAdv'クラスの 'GetTextPosition(string hierarchicalIndex)'メソッドを使用して、格納された階層インデックスを使用してテキスト位置を取得できます。以下のリンクからクラスリファレンスドキュメントを参照してください。

http://help.syncfusion.com/cr/cref_files/wpf/sfrichtextboxadv/Syncfusion.SfRichTextBoxAdv.WPF~Syncfusion.Windows.Controls.RichTextBoxAdv.SelectionAdv~Start.html http://help.syncfusion.com/cr/cref_files/wpf/sfrichtextboxadv/Syncfusion.SfRichTextBoxAdv.WPF~Syncfusion.Windows.Controls.RichTextBoxAdv.SelectionAdv~End.html http://help.syncfusion.com/cr/cref_files/wpf/sfrichtextboxadv/Syncfusion.SfRichTextBoxAdv.WPF~Syncfusion.Windows.Controls.RichTextBoxAdv.TextPosition~GetHierarchicalIndex.html http://help.syncfusion.com/cr/cref_files/wpf/sfrichtextboxadv/Syncfusion.SfRichTextBoxAdv.WPF~Syncfusion.Windows.Controls.RichTextBoxAdv.DocumentAdv~GetTextPosition(String).html

私たちは、階層索引からのテキストの位置を取得するには、ボタンのクリックや方法で選択を維持するために示すために、簡単なサンプルを用意しました。

サンプルコード(C#の):

List<SelectionRangeExt> selectionRanges = new List<SelectionRangeExt>(); 
private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    SelectionRangeExt range = new SelectionRangeExt(); 
    range.Start = richTextBoxAdv.Selection.Start.GetHierarchicalIndex; 
    range.End = richTextBoxAdv.Selection.End.GetHierarchicalIndex; 
    selectionRanges.Add(range); 
} 

public TextPosition GetTextPoistion(string hierarchicalIndex) 
{ 
    if (hierarchicalIndex == null) 
     return null; 
    return richTextBoxAdv.Document.GetTextPosition(hierarchicalIndex); 
} 

サンプルリンク: Sample.zip.

テキスト位置の階層インデックスは、静的な値であり、テキストは前に追加または変更されたときに更新されませんテキストの位置。さらに、クエリのために

は、親切に、次のリンクから https://www.syncfusion.com/support/directtrac

よろしく、 Venkatesanを当社のサポートに連絡してください。

関連する問題