如何在段落RTF c#后添加空格?

时间:2013-08-16 07:15:21

标签: c# richtextbox rtf paragraph

嗨,我的问题是这个 我有一个RichTextBox但是我想在段落之后添加一个“漂亮”的空间,我在互联网上找到了许多例子,但是所有的例子都改变了所有的行,而不仅仅是段落。

private void FormatRTB(byte rule, int space, int x)
    {
        PARAFORMAT fmt = new PARAFORMAT();
        fmt.cbSize = Marshal.SizeOf(fmt);
        fmt.dwMask = PFM_LINESPACING;
        fmt.dyLineSpacing = space;
        fmt.bLineSpacingRule = rule;
        richTextBox1.Select(x, 2);
        SendMessage(new HandleRef(richTextBox1, richTextBox1.Handle),
                     EM_SETPARAFORMAT,
                     SCF_SELECTION,
                     ref fmt
                   );
    }

我添加此代码并选择on \ n因为在“\ n”之后启动段落和dosent工作我不会,如果我的逻辑不好或我需要添加更多代码

while (richTextBox1.Text.IndexOf("\n", k) > 0)
        {
            k = richTextBox1.Text.IndexOf("\n", k);
            setLineFormat(2, 0, k);
            k++;
        }

2 个答案:

答案 0 :(得分:0)

如果您确定所有出现的“\ n”确实是一个不同的段落,您只需在其后添加空格即可。你可以使用一个简单的循环:

for (int i = 0; i < richTextBox1.Text.Length; i++)
{
    if (richTextBox1.Text[i] == '\n')
        richTextBox1.Text.Insert(i + 1, "    ");
}

通常虽然段落标有'\ n'和'\ r',所以你可能会找到\ r而不是

答案 1 :(得分:0)

我知道已有一个已接受的答案,但也许这会有助于其他人。

如果你真的想在RichTextBox中的一个段落之前或之后添加间距,那么就会有一个非常简单的&#34; native&#34; (即没有黑客攻击)解决方案使用 PFM_SPACEBEFORE PFM_SPACEAFTER 。代码与您提供的第一个代码非常相似。

带有自定义控件的完整解决方案已发布在http://dominicweb.eu/en/blog/various/winforms-richtextbox-with-paragraph-spacing-csharp/