2009-08-04 5 views
1

RichTextBox에 많은 텍스트가있는 응용 프로그램에서 작업하고 있습니다. 텍스트 내에서 다양한 위치로 점프하고 있습니다 (예를 들어 임의의 단락으로 건너 뛰기). 해당 위치로 캐럿을 보내면 작동하는 것으로 보이지만 표시 영역에서 캐럿이 끝나는 곳을 제어 할 수없는 것처럼 보입니다.WPF RichTextBox의 표시 가능 영역을 찾으려면 어떻게합니까?

때로는 캐럿이 RichTextBox의 상단에서 가끔씩 끝나는 경우가 있습니다. 캐럿이있는 행에만 관심이 있지만 전체 단락에 관심이 있다면 괜찮습니다. 특히 RichTextBox 중간에 캐럿을 가져오고 싶습니다. 단락이 가시 영역보다 길지 않은 한.

내 질문. RichTextBox의 가시 영역을 결정하고 캐럿을 올바르게 배치하는 방법에 대한 계산을 수행하는 방법이 있습니까? 그 가치가 있다면 나는 중간에 캐럿을 놓을 지 (그리고 중간이 어디에 있는지) 또는 맨 위에 놓을지를 결정할 수 있습니다. 도와 주셔서 감사합니다.

답변

0

이 문제가 해결되었습니다. RichTextBox에는 TextPointer의 위치에 추가 할 때 실제 오프셋을 제공하는 VerticalOffset 속성이 있습니다.

오프셋을 사용하면 RichTextBox.ScrollToVerticalOffset을 사용하여 RichTextBox.ActualHeight 속성을 기반으로 상자를 스크롤 할 수 있습니다.

예 : 는 내가

Rect thisposition = pointer1.GetCharacterRect(LogicalDirection.Forward); 

richTextBox1.Focus(); 
richTextBox1.CaretPosition = pointer1; 


double totaloffset = thisposition.Top + richTextBox1.VerticalOffset; 
richTextBox1.ScrollToVerticalOffset(totaloffset - richTextBox1.ActualHeight/2); 
로 이동하고 싶은 위치에 TextPoint 포인터 1은 포인터가 있다고 가정
관련 문제