2015-10-14 98 views
0

配置:格式的文本顏色表格

  • 的Windows 7
  • .NET 3.5
  • 的Visual Studio 2008

摘要:通過發送的話到RTB一個for循環;根據它們的內容對它們進行格式化(綠色顯示「OK」,紅色顯示「失敗」)。

代碼:

for (int i = 0; i < inputValues.Length; i++) 
{ 
    //checking if the value is OK or not 
    string answer = functionReturningString(inputValues[i], referenceValue); 
    textBox4.Text += answer; //and sending the result string to text box 
} 

現在我只是想選擇最後添加字符串,並根據其內容進行格式化。

textBox4.SelectAll(); 
textBox4.Select(textBox4.SelectedText.Length - answer.Length, answer.Length); 

if (answer == "OK") 
{ 
    textBox4.SelectionColor = Color.Green; 
} else { 
    textBox4.SelectionColor = Color.Red; 
} 

textBox4.Refresh();//I want to see every value as soon as added 
textBox4.Text += "\r\n"; //adding space between words 

至於結果,它最終將對rtb中的所有單詞使用「SelectionColor」。

問:如何確保先前格式化的單詞不會再改變顏色?

更新:建議的解決方案也不起作用。單詞將以正確的顏色顯示(首先)。然後添加下一個單詞並且整個框的顏色改變。

+3

http://stackoverflow.com/questions/2527700/change-color-of-text-within-a-winforms-richtextbox/2531177#2531177 –

+0

@Ivan stoev我需要刪除rtb.refresh(),如果我使用你建議的代碼? – Avigrail

+0

我不確定,爲什麼不嘗試看看是否需要。 –

回答

1

的順序應該是這樣的(假設你開始與空豐富的文本框):

richTextBox.SelectionColor = some_Color; 
richTextBox.AppendText(some_Text); 

下面是一個例子模仿你所描述的情況(如果我理解正確的話):

using System; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Windows.Forms; 

namespace Tests 
{ 
    static class Program 
    { 
     [STAThread] 
     static void Main() 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      var form = new Form(); 
      var richTextBox = new RichTextBox { Dock = DockStyle.Fill, Parent = form }; 
      var button = new Button { Dock = DockStyle.Bottom, Parent = form, Text = "Test" }; 
      button.Click += (sender, e) => 
      { 
       Color TextColor = Color.Black, OKColor = Color.Green, FailedColor = Color.Red; 
       var questions = Enumerable.Range(1, 20).Select(n => "Question #" + n).ToArray(); 
       var random = new Random(); 
       richTextBox.Clear(); 
       for (int i = 0; i < questions.Length; i++) 
       { 
        richTextBox.SelectionColor = TextColor; 
        richTextBox.AppendText(questions[i] + ":"); 
        bool ok = (random.Next() & 1) != 0; 
        richTextBox.SelectionColor = ok ? OKColor : FailedColor; 
        richTextBox.AppendText(ok ? "OK" : "Failed"); 
        richTextBox.SelectionColor = TextColor; 
        richTextBox.AppendText("\r\n"); 
       } 
      }; 
      Application.Run(form); 
     } 
    } 
} 

產生以下

enter image description here

+0

哇,這工作得很好!我不知道你可以做些事情(好嗎?「OK」:「失敗」) 非常感謝:) – Avigrail