我一直在试图弄清楚如果文本是粗体、下划线或斜体,如何从 richtextbox 获取信息。因此,如果我从 richtextbox 中读取一行,我需要知道某些单词是否为粗体等?我不想将内容保存到 .rtf 而是保存到另一个,所以这就是为什么我需要知道哪些单词被格式化为某种格式,以便我可以在单词之前添加标签来保存内容,例如保存到 .txt 文件。
是的,如果你这样做就可以了
private void Button_Click(object sender, RoutedEventArgs e)
{
foreach (Paragraph p in myRichTextBox.Document.Blocks)
{
foreach (var inline in p.Inlines)
{
if (inline.FontWeight == FontWeights.Bold)
{
// obtain text from p
}
}
}
}
如何获取粗体文本?
WPF 中的 RTB 包含流程文件 http://msdn.microsoft.com/en-us/library/system.windows.documents.flowdocument%28v=vs.110%29.aspx。因此,您可以解析文档的树,并检测哪些inline http://msdn.microsoft.com/en-us/library/system.windows.documents.paragraph.inlines%28v=vs.110%29.aspx包含特定文本。基本概念:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<RichTextBox x:Name="myRichTextBox">
<RichTextBox.Document>
<FlowDocument>
<Paragraph>
<Bold>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</Bold>
</Paragraph>
<Paragraph>
<Italic>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</Italic>
</Paragraph>
<Paragraph>
<Underline>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</Underline>
</Paragraph>
</FlowDocument>
</RichTextBox.Document>
</RichTextBox>
<Button Grid.Row="1" Content="Parse" Click="Button_Click"/>
</Grid>
隐藏代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
foreach (Paragraph p in myRichTextBox.Document.Blocks)
{
foreach (var inline in p.Inlines)
{
if (inline is Bold)
{
// ...
}
if (inline is Italic)
{
// ...
}
if (inline is Underline)
{
// ...
}
}
}
}
请注意,内联可以嵌套:
<Underline>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<Bold>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<Italic>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</Italic>
</Bold>
</Underline>
解析内容时应该考虑到这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)