2017-12-25 21 views
0

사용자가 SfRichTextBoxAdv에서 선택을하고 이러한 선택 항목 (텍스트 범위)을 컬렉션에 저장하도록하려고합니다. 문제는 텍스트가 추가되거나 삭제 될 때 텍스트 범위가 시작/끝 위치를 업데이트하기를 원합니다. 즉, 텍스트가 텍스트 범위 앞에 추가되고 앞으로 밀면 앞으로 시작/끝 인덱스를 그에 따라 증가시켜야합니다.Syncfusion SfRichTextBoxAdv - WPF TextRange 기능을 복제 하시겠습니까?

일반 WPF RichTextBox에서는 TextRange를 사용하여이 작업을 수행 할 수있었습니다. TextRange를 사용하면 선택한 텍스트를 TextRange 변수로 저장할 수 있습니다. 그런 다음 TextRange 앞에 텍스트를 추가하고 문서에서 앞으로 밀어 넣으면 시작 및 끝 TextPointer 속성이 그에 따라 변경됩니다.

SfRichTextBoxAdv를 사용하여 선택한 텍스트를 SelectionAdv 변수로 저장하면 커서가 문서에서 현재 커서 위치 (현재 선택)로 이동할 때마다 변수가 업데이트됩니다. 그래서 커서를 문서에서 움직일 때마다 항상 변경되기 때문에 변수에 선택 영역을 저장할 수도 없습니다. 두 개의 TextPosition 변수를 사용하여 선택 저장을 시도했습니다.

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

그러나 커서가 SelectionAdv처럼 움직이면 여전히 업데이트됩니다.

답변

0

Syncfusion 제품을 사용해 주셔서 감사합니다. SfRichTextBoxAdv 제어에서

은 '시작'과 'SelectionAdv'의 '끝'속성은 현재 커서 위치를 나타냅니다. 따라서 커서가 움직일 때마다 자동으로 업데이트됩니다. 그러나 문자열을 반환하는 '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을 우리의 지원 센터에 문의하십시오.