2017-12-25 6 views
0

Ich versuche, den Benutzer in der SfRichTextBoxAdv Auswahl treffen lassen und diese Auswahl (Textbereiche) zu einer Sammlung speichern. Die Sache ist, dass ich auch möchte, dass die Textbereiche ihre Start-/Endpositionen aktualisieren, wenn Text davor hinzugefügt oder gelöscht wird. Wenn Text vor dem Textbereich hinzugefügt und nach vorne verschoben wird, müssen die Start-/Endindizes entsprechend inkrementiert werden.Syncfusion SfRichTextBoxAdv - Replizieren der WPF TextRange-Funktionalität?

In der regulären WPF RichTextBox konnte ich dies mit TextRange tun. Mit TextRange kann ich den ausgewählten Text als TextRange-Variable speichern. Wenn dann vor dem TextRange Text hinzugefügt und im Dokument nach vorne verschoben wird, ändern sich die Eigenschaften von TextPointer am Anfang und am Ende entsprechend.

Mit SfRichTextBoxAdv, wenn ich den ausgewählten Text als SelectionAdv Variable speichern, aktualisiert die Variable jedes Mal, wenn der Cursor im Dokument an die aktuelle Cursorposition (aktuelle Auswahl) bewegt. Daher kann ich die Auswahl nicht einmal in einer Variablen speichern, da sie sich ständig ändert, wenn sich der Cursor im Dokument bewegt. Ich habe versucht Speichern der Auswahl mit den beiden TextPosition Variablen:

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

Aber sie selbst noch aktualisiert werden, wenn der Cursor wie SelectionAdv bewegt.

Antwort

0

Vielen Dank für die Verwendung von Syncfusion-Produkten.

Im SfRichTextBoxAdv-Steuerelement bezeichnen die Eigenschaften 'Start' und 'Ende' von 'SelectionAdv' die aktuelle Cursorposition. Daher wird es automatisch aktualisiert, wenn der Cursor bewegt wird. Sie können die aktuelle Textposition jedoch mit der Eigenschaft 'GetHierarchicalIndex' der Klasse 'TextPosition' speichern, die eine Zeichenfolge zurückgibt. Später können Sie die Textposition mithilfe eines gespeicherten hierarchischen Indexes abrufen, indem Sie die Methode 'GetTextPosition (string hierarchicIndex)' der Klasse 'DocumentAdv' verwenden. Bitte verweisen Sie unsere Klassenreferenz-Dokumentation von folgendem Link.

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

wir eine einfache Probe vorbereitet haben zu zeigen, um die Auswahl in einer Schaltfläche klicken und Verfahren zur Erhaltung die Textposition aus dem hierarchischen Index zu erhalten.

Beispielcode (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); 
} 

Beispiellink: Sample.zip.

Der hierarchal Index der Textposition ist statischer Wert und es wird nicht aktualisiert werden, wenn der Text hinzugefügt oder geändert wird, bevor die Textposition.

Für weitere Fragen, bitte unsere Unterstützung folgenden Link kontaktieren, https://www.syncfusion.com/support/directtrac

Grüße, Venkatesan.

Verwandte Themen