2014-11-21 4 views
3

Я хочу сделать ящик, где я могу отображать определенный текст, ориентированный на левый и определенный текст, ориентированный на C#. Например,Правое и левое выравнивание richtextbox C#

Код

If (msg from admin) 
    richTextBox.Append(rightAligned(msg)) 
else 
    richTextBox.Append(leftAligned(msg)) 

Я попытался SelectionAlignment особенность richTextBox, но это относится конкретный формат для всего текста в поле. Как я могу достичь желаемого результата? Любая помощь будет принята с благодарностью.

+0

Это будет лучше, если вы используете панель Вместо RichTextBox ... – yash

ответ

3

Вы можете использовать Environment.Newline и RichTextBox.SelectionAlignment для вашего richTextBox.

Для примера:

if (msg from admin) { 
    richTextBox.AppendText(Environment.NewLine + msg); 
    richTextBox.SelectionAlignment = HorizontalAlignment.Right; 
} else { 
    richTextBox.AppendText(Environment.NewLine + msg); 
    richTextBox.SelectionAlignment = HorizontalAlignment.Left; 
} 
+1

Спасибо так много, что прекрасно работает на моем примере – Rukshod

1

Это может быть сделано, как хорошо :)

If (...) 
    { 
     textBox1.TextAlign = HorizontalAlignment.Left; 
     textBox1.Text = " Blah Blah "; 
    } 
else 
    { 
     textBox1.TextAlign = HorizontalAlignment.Right; 
     textBox1.Text = " Blah Blah Right"; 
    } 
1

Чтобы просто установить выравнивание текста в добавляется, вам нужно выбрать только прилагаемый текст, затем используйте свойство SelectionAlignment:

public static void AppendLineAndAlignText(this RichTextBox richTextBox, string text, HorizontalAlignment alignment) 
    { 
     if (string.IsNullOrEmpty(text)) 
      return; 
     var index = richTextBox.Lines.Length;      // Get the initial number of lines. 
     richTextBox.AppendText("\n" + text);      // Append a newline, and the text (which might also contain newlines). 
     var start = richTextBox.GetFirstCharIndexFromLine(index); // Get the 1st char index of the appended text 
     var length = richTextBox.Text.Length;  
     richTextBox.Select(start, length - index);     // Select from there to the end 
     richTextBox.SelectionAlignment = alignment;    // Set the alignment of the selection. 
     richTextBox.DeselectAll(); 
    } 

После тестирования немного кажется, что только установка SelectionAlignment будет работать до тех пор, пока строка text не содержит символов новой строки, но если есть встроенные строки новой строки, только последняя добавленная строка выравнивается правильно.

public static void AppendLineAndAlignText(this RichTextBox richTextBox, string text, HorizontalAlignment alignment) 
    { 
     // This only works if "text" contains no newline characters. 
     if (string.IsNullOrEmpty(text)) 
      return; 
     richTextBox.AppendText("\n" + text);      // Append a newline, and the text (which must not also contain newlines). 
     richTextBox.SelectionAlignment = alignment;    // Set the alignment of the selection. 
    } 
Смежные вопросы