RichTextBox无法正确识别行

时间:2018-03-18 03:36:34

标签: c# .net winforms richtextbox rtf

我试图找到类似的问题,但没有运气。

我需要逐行阅读RTF,修改并保存。 现在是早上4点,我没有想法,这让我疯狂......

问题:

我想阅读的元素是在行[10]中,我可以在运行时,在本地变量中清楚地看到它。但RichTextBox继续在Lines [11]中看到它,而Lines [10]仍为空。

IDEA:

我认为这可能是由格式不正确的RTF造成的,这就是这条线的样子(“!”是这个字符串的必要部分,这就是代码识别它需要处理的行的方式):

"\f!LOREMIPSUM=NW"

我的代码:

这里没有弄乱RTF语法我使用的方法是:

   public string ReadLine(int line)
    {
        int s1 = RTxtBox.GetFirstCharIndexFromLine(line);
        int s2 = line < RTxtBox.Lines.Length - 1 ?
                  RTxtBox.GetFirstCharIndexFromLine(line + 1) - 1 :
                  RTxtBox.Text.Length;

        RTxtBox.Select(s1, s2 - s1);
        yPos = line;
        xPos = s1;
        return RTxtBox.SelectedText;

    }

用于测试的MCV样本RTF:(行[1]导致问题)

    {\rtf1\ansi\ansicpg1250\deff0\deflang1045\deflangfe1045\deftab648{\fonttbl{\f0\fswiss\fprq2\fcharset238{\*\fname Arial;}Arial CE;}{\f1\fnil\fcharset0 MS Serif;}}
{\colortbl ;\red0\green0\blue0;\red255\green0\blue0;}
\viewkind4\uc1\pard\nowidctlpar\ri-504\tqr\tx9864\cf1\lang1033\f0\fs20 !LOREMIPSUM\cf0\f1\fs24\par
\page\cf2\f0\fs20 !LOREMIPSUM=NW\cf0\f1\fs24\par
\cf1\b\f0\fs28 LOREMIPSUM\cf0\b0\f1\fs24\par
\pard\nowidctlpar\ri-504\tx1512\tx5184\tx6336\tqr\tx9864\cf2\f0\fs20 !LOREM\cf0\f1\fs24\par
\cf2\f0\fs20 !DOLOR=VW\cf0\f1\fs24\par
\pard\nowidctlpar\ri-504\tqr\tx9864\cf2\lang1045\f0\fs20 !SITAMET\cf0\f1\fs24\par
}

0 个答案:

没有答案