我如何从 RichTextBox 中读取内容,其中包含粗体、下划线、斜体等信息

2024-04-20

我一直在试图弄清楚如果文本是粗体、下划线或斜体,如何从 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(使用前将#替换为@)

我如何从 RichTextBox 中读取内容,其中包含粗体、下划线、斜体等信息 的相关文章

随机推荐