嗨,我的问题是这个 我有一个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++;
}
答案 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/
上