2

在我的项目中,我想使用一个富文本框,它具有对齐的文本对齐和呈现 HTML 标记。我检查并尝试了网络上的所有示例。但我并没有在我的脑海中找到类似的东西。我厌倦了AdvRichTextBox但它不支持 HTML。我想为它写一些新功能。我尝试编写如下方法:

private void htmlRTB(AdvRichTextBox rtb)
{
    foreach (var line in rtb.Lines)
    {
        int boldStart = rtb.Find("<b>");
        int boldEnd = rtb.Find("</b>");
        rtb.Select(boldStart, (boldEnd - boldStart));
        rtb.SelectionFont = new Font("Arial", 9, FontStyle.Bold);
        line.Replace("<b>", "").Replace("</b>", "");

        int italicStart = rtb.Find("<i>");
        int italicEnd = rtb.Find("</i>");
        rtb.Select(italicStart, (italicEnd - italicStart));
        rtb.SelectionFont = new Font("Arial", 9, FontStyle.Italic);
        line.Replace("<i>", "").Replace("</i>", "");
    }
}

但它被搞砸了。首次使用 HTML 标记时,它们显示为粗体或斜体。但是替换方法不起作用。并且当 HTML 标签在第二次或更多次使用时,它们不会显示为粗体或斜体,并且替换方法不起作用。这是截图图像: 在此处输入图像描述 请你帮我解决这个问题?亲切的问候。

4

1 回答 1

1

看起来您只是在替换您拉出的行中的标签,而不是 RTB 本身。您需要对 RTB 文本运行替换。应该不会太难,因为您已经有了标签的 int 位置,可以使用它。

此外,你的 for 循环不会像你想象的那样工作,因为所有文本都被认为是一行......这就是为什么它只加粗/突出显示第一行。当我下班回家时,我会试着为你写一个例子。

于 2012-11-29T20:13:33.477 回答