WPF의 서식있는 텍스트 상자에서 단락을 읽고이를 메시지 상자에 표시하려면 어떻게해야합니까?리치 텍스트 단락에서 단락 읽기
답변
당신이 RichTextBox
의 모든 단락을 반복 할 경우, extension methods를 포함하는 다음과 같은 정적 클래스가 필요한 방법을 제공하십시오 변환,
public static class FlowDocumentExtensions
{
public static IEnumerable<Paragraph> Paragraphs(this FlowDocument doc)
{
return doc.Descendants().OfType<Paragraph>();
}
}
public static class DependencyObjectExtensions
{
public static IEnumerable<DependencyObject> Descendants(this DependencyObject root)
{
if (root == null)
yield break;
yield return root;
foreach (var child in LogicalTreeHelper.GetChildren(root).OfType<DependencyObject>())
foreach (var descendent in child.Descendants())
yield return descendent;
}
}
당신이 FlowDocument
의 모든 단락을 수집하면 텍스트에 하나의 단락, 당신이 할 수 있습니다
var text = new TextRange(paragraph.ContentStart, paragraph.ContentEnd).Text;
과 함께이를 넣어하는 방법의 예 것은 :
,536,foreach (var paragraph in canvas.Document.Paragraphs())
{
MessageBox.Show(new TextRange(paragraph.ContentStart, paragraph.ContentEnd).Text);
}
원하는 것이 맞습니까?
업데이트
만약 당신이 확장 방법을 사용하여 불편 어떤 이유로, 당신은 항상 기존의 C# 2.0 정적 방법을 사용할 수 있습니다에 대한 :
public static class FlowDocumentExtensions
{
public static IEnumerable<Paragraph> Paragraphs(FlowDocument doc)
{
return DependencyObjectExtensions.Descendants(doc).OfType<Paragraph>();
}
}
public static class DependencyObjectExtensions
{
public static IEnumerable<DependencyObject> Descendants(DependencyObject root)
{
if (root == null)
yield break;
yield return root;
foreach (var child in LogicalTreeHelper.GetChildren(root).OfType<DependencyObject>())
foreach (var descendent in child.Descendants())
yield return descendent;
}
}
그리고
foreach (var paragraph in FlowDocumentExtensions.Paragraphs(mainRTB.Document))
{
MessageBox.Show(new TextRange(paragraph.ContentStart, paragraph.ContentEnd).Text);
}
좋아. 확인하겠습니다. 그러면 알려 드리겠습니다. – GunJack
이 코드는 어떻게 작성합니까? FlowDocument에 하위 항목에 대한 정의가 없습니다. – GunJack
@GunJack -'DependencyObjectExtensions' 정적 클래스는'DependencyObject'에'Descendants()'라는 [확장 메소드'] (http://msdn.microsoft.com/en-us/library/bb383977.aspx)를 추가하고 'FlowDocument'를 포함한 그 모든 서브 클래스. 내 대답에 표시된 두 가지 확장 클래스를 모두 포함 했습니까? – dbc
- 1. Word interop 한 단락에서 다음 단락 서식으로 텍스트 추가
- 2. Delphi 리치 괄호로 단락 선택
- 3. 플래시 빌더 읽기 전용 리치 텍스트 필드?
- 4. Sitecore - 리치 텍스트 편집기 - 클래스 속성이있는 새로운 단락 만들기
- 5. 텍스트 파일 만 모든 단락 읽기
- 6. xpath를 사용하여 여러 단락에서 텍스트 선택
- 7. 는 셰어 리치 텍스트 필드는
- 8. 텍스트 상자의 단락에서 특정 텍스트 값을 재정의하는 방법
- 9. Jsoup 출력 단락에서 단락 사이의 공백을 제거하는 방법은 무엇입니까?
- 10. Django App의 리치 텍스트
- 11. JSON 문자열의 리치 텍스트
- 12. Grails를위한 리치 텍스트 플러그인
- 13. 리치 텍스트 상자 라이브러리
- 14. gtk-sharp의 리치 텍스트?
- 15. ... WYSIWYG 리치 텍스트 교체
- 16. QTextEdit에서 리치 텍스트 사용
- 17. iPad 리치 텍스트 컨트롤
- 18. Apache POI : 단락 텍스트 바꾸기
- 19. 단락
- 20. doxc4j 단락에서 캐리지 리턴 피하기
- 21. mysql에 텍스트 단락 저장하기
- 22. 가운데 단락 텍스트
- 23. PHP 텍스트 필드 단락
- 24. 단락에서 임의의 문장을 얻을
- 25. Wordpress 두 번째 단락에서 발췌
- 26. 리치 텍스트 상자에 공백이있는 파일 경로에 연결
- 27. 리치 텍스트 디스플레이가 시스템을 고정시킵니다.
- 28. socket.io 퀼로 리치 텍스트 편집
- 29. 리치 텍스트 필드에 이미지 포함
- 30. iPhone의 리치 텍스트 영역 디자인
TextRange textRange = 새를 TextRange (canvas.Document.ContentStart, canvas.Document.ContentEnd); MessageBox.Show (textRange.Text); 그러나 그것은 상자에있는 모든 텍스트를 제공합니다 – GunJack
질문에 넣어 –