2012-06-25 33 views
3

我需要將RTB中的文本的某個部分高亮顯示,而不是改變字體樣式/顏色,但是在選擇特定塊的意義上顏色。這與Visual Studio在調試模式下突出顯示一行相似。富文本框如何突出顯示沒有選擇的文本塊

這裏重要的是要實現上述功能WITHOUT使用richtextbox.select函數,因爲我有richtextbox正在定期更新,如果它在每次更新時調用select函數,用戶將有困難的時間拖動文本,我不希望發生這種情況。

我聽說過編輯rtf的某處,但我不完全確定如何做到這一點。我會很感激任何幫助。

回答

4

編輯:剛剛意識到的問題是winforms。下面的答案是WPF,而不是刪除我要離開它,以防有人發現它有用。

獲取使用的TextRange(...)的文本並應用背景 例如:

TextRange tr = new TextRange(position, nextPosition); 
var Br = new SolidColorBrush(Color.FromScRgb(alpha, 1f, 1f, 0f)); 
tr.ApplyPropertyValue(TextElement.BackgroundProperty, Br); 

但是,也許你應該考慮你的更新機制,並拿出一個更好的解決方案。

2

這不使用richtextbox的Select()函數。它只是使用start and end indexand updates the region中的那些座標with適當的colour

// change the co-ordinates as per the selection in the run-time 
    richTextBox1.Text = "Select some text"; 
    richTextBox1.SelectionStart = 0; 
    richTextBox1.SelectionLength = 4; 
    richTextBox1.SelectionBackColor = Color.LightBlue; 

Sele將在Light Blue被選擇用於上述代碼。

+0

唉,這種方法不起作用,如果你想爲你的文字的幾個部分着色 –

+0

你可以將它作爲一個新的問題發佈在SO上。 –