WPF RichTextBox控件,如何查找所有斜体字
如何循环RTB(WPF控件)中的所有“单词”(空格删除单词)以查看哪些单词是斜体的WPF RichTextBox控件,如何查找所有斜体字,wpf,richtextbox,Wpf,Richtextbox,如何循环RTB(WPF控件)中的所有“单词”(空格删除单词)以查看哪些单词是斜体的 谢谢嗯,你的任务似乎很复杂 RichTextBox的内容是可在属性中找到的。而流程文档又由几个部分组成 每个可以是a、a、a等。您需要分别分析它们 对于段落,它由多个段落组成,每个段落都可以是a,而a又可以是。斜体表示斜体文本。反过来,Italic可以有其他内联线,包含其他Spans(例如,Hyperlinks,您可能希望也可能不希望将其包含在结果中) 您基本上需要递归遍历所有结构,并从Italics中查看文本。
谢谢嗯,你的任务似乎很复杂
RichTextBox
的内容是可在属性中找到的。而流程文档
又由几个部分组成
每个可以是a、a、a等。您需要分别分析它们
对于段落
,它由多个段落组成,每个段落都可以是a,而a又可以是。斜体表示斜体文本。反过来,Italic
可以有其他内联线,包含其他Span
s(例如,Hyperlink
s,您可能希望也可能不希望将其包含在结果中)
您基本上需要递归遍历所有结构,并从Italic
s中查看文本。一个特殊的情况可能是单词中只有一部分是斜体,你需要为它们制定一个策略
我不知道有什么更简单的方法可以实现你想要的。嗯
编辑:也许更简单的替代解决方案是从一开始就使用(
richTextBox.Document.ContentStart
)遍历所有文本,然后使用position.GetNextContextPosition(LogicalDirection.Forward)
,切换到下一个位置,并使用position.Parent
测试当前位置是否在Italic
中。但是,您应该注意Italic
可以是非直接父对象,因此您可能需要向上遍历多个父对象。免责声明:我从未在我的代码中尝试过这个想法
TextPointer tp = RTB.Document.ContentStart;
TextRange word = WordBreaker.GetWordRange(tp);
while (word.End.GetNextInsertionPosition(LogicalDirection.Forward) != null)
{
if (word.GetPropertyValue(TextElement.FontStyleProperty).ToString() == "Italic")
{
}
word = WordBreaker.GetWordRange(word.End.GetNextInsertionPosition(LogicalDirection.Forward));
}
}
使用来自的WordBreaker类
我使用了您的基本想法,即检查每个文件是否为斜体或notTextPointer tp=RTB.Document.ContentStart;text范围word=WordBreaker.GetWordRange(tp);while(word.End.GetNextInsertionPosition(LogicalDirection.Forward)!=null){if(word.GetPropertyValue(TextElement.FontStyleProperty.ToString()=“Italic”){}word=WordBreaker.GetWordRange(word.End.GetNextInsertionPosition(LogicalDirection.Forward));}}具有来自的断字器类