2015-10-13 4 views
1

У меня есть этот метод, который заменяет (жирным) некоторые слова в строке и показывает измененную строку в ritchtextBox. В последней строке мне нужно заменить символ @ на новую строку. Я уже пробовал проверять этот форум, связывая несколько решений, но ничего не работало.RichTextBox не печатает новую строку

Метод, который я использую

private string bold(string ing) 
{ 
    StringBuilder builder = new StringBuilder(); 

    ing = " " + ing + " "; 

    builder.Append(@"{\rtf1\ansi"); 
    foreach (string word in splitwords) 
    { 
     var regex = new Regex(@"(?<![\w])" + word + @"(?![\w])", RegexOptions.IgnoreCase); 
     ing = regex.Replace(ing, m => @"\b" + m.ToString() + @"\c0"); 
    } 

    ing = ing.Replace(@"\b", @"\b "); 
    ing = ing.Replace(@"\c0", @" \b0"); 
    ing = ing.Replace("@", Environment.NewLine); 

    builder.Append(ing); 
    builder.Append(@"}"); 
    MessageBox.Show("builder.ToString():" + builder.ToString()); 
    return builder.ToString(); 
} 

Когда я называю этот метод и «поставить его» в ritchTextBox он это не распространяется печатать новую строку

ingred.Rtf = bold(ingd); 

Как мне решить эту проблему ??

EDIT :: строка ввода - line1 @ line2 @ line3

выход в MessageBox

Builder.ToString() : {\rtf1\ansi\b line1\b0 
line2 
line3 
} 

выход в ritchTextBox: line1 line2 line3

+0

я не вижу какой-либо '(\ г) \ n' здесь O_O – kevintjuh93

+1

Так как это RitchTextBoxIm, используя Environment.NewLine. Но я уже пробовал это, без радости. –

+0

А я вижу это сейчас. Использует ли 'string' перед выполнением' Replace' какой-либо '@'? – kevintjuh93

ответ

2

Вместо

ing = ing.Replace("@", Environment.NewLine); 

Попробуйте

ing = ing.Replace("@", @"\par\r\n"); 
+0

Он работает, вы можете объяснить \ par? –

+0

\ par для абзаца, так что здесь работает как хак. –

0

Попробуйте заменить его с последовательностью символов в "\r\n" ?

Редактировать: is MultiLine property of ritchtextBox enabled?

+0

Это была одна из вещей, которые я создал на этом форуме, и она не работала ни –

1

Лучшее использование Environment.NewLine для добавления новой строки. Также убедитесь, что свойство yourRTB.MultiLine имеет значение true. присвоить строку Richtext окно, как этот yourRTB.AppendText(t)

+0

, она установлена ​​в true –

+0

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

+0

Но это не то, что я делаю в этой строке? ингредиент. Rtf = жирный (ingd); –

1

Используйте этот код для Repalce

int startIndex = 0, index; 
RichTextBox myRtb = new RichTextBox(); // if have A richtextBox Remove thisline and Use your Richtextbox 
      myRtb.Rtf = STRRTF;// if have A richtextBox Remove thisline and Use your Richtextbox 
    while ((index = myRtb.Text.IndexOf("@", startIndex)) != -1) 
       { 
        myRtb.Select(index, word.Length); 

        myRtb.SelectedText ="\n"; 

        startIndex = index + 1; 
       } 
Смежные вопросы