2012-04-01 73 views
5

thể trùng lặp:
How to select text from the RichTextBox and then color it?C# - màu thay đổi RichTextBox của một số từ

tôi không thực sự có bất kỳ mã để hiển thị, bởi vì tôi không biết :(tôi. có một máy chủ xuất thông tin với các thẻ. Ví dụ:

15:44 [INFO] Loaded Properties 
15:45 [ERROR] Properties not found 

Làm cách nào để tìm trong richtextbox và tạo tất cả ERROR thẻ màu đỏ, INFO thẻ XANH, v.v ...?

+2

Câu trả lời được chấp nhận vào các bài Tôi đề xuất như một bản sao có vẻ là một cách rất tốt để làm những gì bạn muốn –

+0

Cảm ơn nhưng Regex không hoạt động - w mũ không gian tên? –

+1

System.Text.RegularExpressions; http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.aspx –

Trả lời

2

Tôi nghĩ rằng điều này sẽ làm những gì bạn muốn:

for(int i=0; i<rtb.Lines.Length; i++) 
{ 
    string text = rtb.Lines[i]; 
    rtb.Select(rtb.GetFirstCharIndexFromLine(i), text.Length); 
    rtb.SelectionColor = colorForLine(text); 
} 

private Color colorForLine(string line) 
{ 
    if(line.Contains("[INFO]", StringComparison.InvariantCultureIgnoreCase) return Color.Green; 
    if(line.Contains("[ERROR]", StringComparison.InvariantCultureIgnoreCase) return Color.Red; 

    return Color.Black; 
} 

Edit: Changed StartsWith-Contains

+0

Không hoạt động: ( –

+0

@AlexOgden thử bằng 'Contains' thay vì' StartsWith' –

+0

Thử đặt điểm ngắt trong colorForLine và xem điều kiện có bị trúng – aKzenT

0

Bạn có thể làm một cái gì đó như:

//will select characters form index 0 to 9 
richTextBox1.Select(0, 10); 

//will set the characters from 0 to 9 to red 
richTextBox1.SelectionColor = Color.Red; 
+0

Câu trả lời khác đã cho thấy rằng + nó là 'SelectionColor' không phải' SelectionColour' –

+5

Xin lỗi! Anh tiếng Anh! :) –

+0

@EddardStark - hoặc chỉ tiếng Anh như nó được biết đến –

Các vấn đề liên quan