2016-07-07 8 views
1

У меня есть код ниже, чтобы добавить текст в RichTextBox.Как я могу покрасить конкретный текст richTextBox один раз в желтый цвет и один раз в красном?

public void SetText(string text) 
{ 
    richTextBox2.Text = text; 
    SetRichTextBoxColors(true); 
} 

private void SetRichTextBoxColors(bool yellow) 
{ 
    if (yellow) 
    { 
     // color text in red 
    } 
    else 
    { 
     // color text in yellow 
    } 
} 

Каждая кнопка щелкните SetText получить новый текст и добавить его в richTextbox2. Я хочу, чтобы первый раз добавленный текст будет желтым цветом, то в следующий раз он будет красным, то желтым потом опять красный ...

В новой форме я сделал:

private void button1_Click(object sender, EventArgs e) 
{ 
    _form1.SetText(textBox1.Text); 
} 

Что должен Я применил метод SetRichTextBoxColors, чтобы он работал?

+0

Ваше требование недостаточно ясно, Какова трудность, с которой вы сейчас сталкиваетесь? –

+0

@ un-lucky В SetText, как я могу сделать это, как только он будет правдой и когда-нибудь ложным? –

+0

Итак, вы хотите добавить текст из текстового поля в RichTextBox, если текст из текстового поля и текста в RichBox одинаковы, тогда цвет будет красным, иначе он будет желтым. Я прав? –

ответ

2

Вы можете использовать флаг на уровне формы, чтобы определить, следует ли использовать желтый цвет. Затем в методе проверки флага, решите использовать какой цвет, а затем добавить цветной текст и инвертировать флаг:

bool yellow = true; 
public void AddText(string text) 
{ 
    richTextBox1.SelectionStart = richTextBox1.Text.Length; 
    richTextBox1.SelectionLength = 0; ; 
    richTextBox1.SelectionColor = yellow ? Color.Yellow : Color.Red; 
    richTextBox1.SelectedText = text; 
    yellow = !yellow; 
} 

Примечание

  • Чтобы заменить все содержимое, вы можете назначить стоимость до Text Недвижимость.
  • Чтобы добавить текст, вы можете использовать метод AppendText.
  • Чтобы использовать только один цвет для всего содержимого, вы можете назначить цвет ForeColor.
  • Для вставки цветного текста в любом индексе RichTextBox вы можете установить SelectionStart указанного индекс, SelectionLength к 0, SelectionColor до указанного цвета, а затем присвоить данный текст SelectionText собственности.
+0

Я думаю, 'SelectionLength' должен быть' text.Length' –

+0

@ דניאלרשת Просто скопируйте метод и вставьте его в свой класс, и вы увидите, что он работает правильно :) –

+0

@ un-lucky Это делает richtextbox игнорировать текущий выбор, предотвратить изменение цвета текущего выбора. –