2013-08-16 4 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 
        ); 
    } 

Ну я добавить этот код и выберите оны в \ п, так как после того, как из «\ п» начать абзац и доцент работы я не если моя логика плохо или мне нужно, чтобы добавить больше кода

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

.

ответ

0

Я знаю, что уже есть принятый ответ, но, возможно, это поможет другим людям.

Если вы действительно хотите добавить интервал до или после абзаца в RichTextBox, не очень простой и «родной» (то есть. Нет взлома) решения с использованием PFM_SPACEBEFORE или PFM_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, " "); 
} 

Часто, хотя параграфы, отмеченные как «\ п» и «\ г», так что вы можете посмотреть на \ г вместо

+0

Спасибо «\ г» вместо XD доцентом – lbe2014

Смежные вопросы