2013-08-16 36 views
0

嗨,我的問題是這樣的 我有一個RichTextBox,但我想在段落後添加一個「漂亮」的空間,我在互聯網上找到很多例子,但所有的例子都改變了所有的行,而不僅僅是段落。如何在段落RTF c#後添加空格?

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 
        ); 
    } 

嗯,我添加以下代碼,並選擇ONY因爲後「\ n」開始的段落和dosent作品,如果我的邏輯是不好的,我不與\ n或我需要添加更多的代碼

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

回答

0

我知道已經存在一個被接受的答案,但也許這會幫助其他人。

如果你真的想之前或在RichTextBox中一個段落後增加間距,有一個非常簡單的「原生」(即沒有黑客)使用PFM_SPACEBEFOREPFM_SPACEAFTER解決方案。該代碼與第一個代碼非常相似。

與自定義控制的完整的解決方案張貼在http://dominicweb.eu/en/blog/various/winforms-richtextbox-with-paragraph-spacing-csharp/

0

如果您確定所有出現的「\ n」確實是不同的段落,您可以簡單地在它後面添加空格。你可以使用一個簡單的循環如:

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

雖然經常段落都標有兩個「\ n」和「\ r」,所以你可以查找\ r代替

+0

謝謝「\ r」 dosent代替的xD – lbe2014

相關問題