2012-06-25 40 views
5

Tôi cần một phần văn bản nhất định trong RTB được đánh dấu không theo ý nghĩa thay đổi kiểu phông/màu, nhưng theo ý nghĩa tạo vùng chọn với màu cụ thể. Điều này tương tự như cách Visual Studio làm nổi bật một dòng trong chế độ gỡ lỗi.Hộp văn bản đa dạng cách đánh dấu khối văn bản

Làm cách nào để tôi có thể thực hiện tính năng này bằng RTB hay đúng hơn, thậm chí có thể thực hiện được không? Nếu không thể, tôi muốn nghe một cách khác để thực hiện nhiệm vụ trên.

+0

thể trùng lặp của [Làm thế nào để có xen kẽ màu sắc dòng cho một RichTextBox Winforms?] (http://stackoverflow.com/questions/5982006/how-to-have-alternating-line-colors-for-a-winforms-richtextbox) –

+0

Tôi nghĩ rằng bạn đang tìm kiếm [Sci ntillaNET] (http://scintillanet.codeplex.com/). Mặt khác, nếu bạn muốn làm điều này một mình trong RTB thì bạn có thể làm điều đó bằng cách đầu tiên tìm 'lineNumber' bằng [TextBoxBase.Lines] (http://msdn.microsoft.com/en-us/library/system .windows.forms.textboxbase.lines.aspx) thuộc tính. Sau đó ... // Chọn dòng từ số của nó richTextBox.GetFirstCharIndexFromLine (lineNumber); richTextBox.Select (startIndex, length); // Đặt màu văn bản đã chọn và màu nền richTextBox.SelectionColor = System.Drawing.Color.White; richTextBox.SelectionBackColor = System.Drawin – ABH

Trả lời

7

Tôi nghĩ bạn đang tìm kiếm ScintillaNET.

Mặt khác, nếu bạn muốn thực hiện điều này một mình trong RTB thì bạn có thể thực hiện điều đó bằng cách đầu tiên tìm kiếm lineNumber sử dụng thuộc tính TextBoxBase.Lines. Sau đó ...

//Select the line from it's number 
startIndex = richTextBox.GetFirstCharIndexFromLine(lineNumber); 
richTextBox.Select(startIndex, length); 

//Set the selected text fore and background color 
richTextBox.SelectionColor = System.Drawing.Color.White; 
richTextBox.SelectionBackColor= System.Drawing.Color.Blue; 
+0

Bạn không bỏ qua giá trị trả về 'GetFirstCharIndexFromLine()' thay vì lưu nó vào biến 'startIndex'? – Jack

+1

@Jack - được cập nhật, cảm ơn bạn đã đánh dấu. – ABH

9

Có, bạn có thể đặt BackColor của lựa chọn RichTextBox bằng cách sử dụng thuộc tính RichTextBox.SelectionBackColor.

int blockStart = 1; //arbitrary numbers to test 
int blockLength = 15; 
richTextBox1.SelectionStart = blockStart; 
richTextBox1.SelectionLength = blockLength; 
richTextBox1.SelectionBackColor = Color.Yellow; 
1

Ở đây tôi đã tạo CustomRichTextBox để đạt được điều này.

Mã nguồn dài với kịch bản được giải thích tại đây. Nếu bạn quan tâm thì bạn có thể tái sử dụng usercontrol này trực tiếp mà không cần lo lắng về nhiều

Kịch bản

https://sites.google.com/site/greateindiaclub/mobil-apps/windows8/customwpfrichtextboxwithcolorchangeandhighlightfunctionality

mã nguồn:

https://github.com/boobalaninfo/CustomRichTextBoxWithHighligh

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