2016-05-12 40 views
-2

我想在富文本框中光標閃爍的位置添加字符串。我也想改變我輸入的文字的顏色。例如,如果預先輸入的文字顏色是黑色的,那麼我輸入了一個新的字符串,那麼這個字符串應該是藍色的。我應該一直輸入字符串。我輸入的琴絃應該保持藍色。謝謝如何在富文本框C#中的光標位置附加字符串?

回答

0

當前光標位置,也知道作爲SelectionStart。只需設置SelectionStart=0,然後設置要所有SelectionXXX屬性:

richtTextBox1.SelectionLength=0; 
richtTextBox1.SelectionColor = Color.Blue; 

現在你鍵入將變成藍色。

沒有更多,也不需要。無需訂閱TextChanged事件。

請注意,如果您將光標位置移動到其他地方,該地點將會擁有自己的顏色,並且在此處輸入新文本時,它將具有該顏色。

如果你想新的顏色(藍色)適用於其他部位,你需要這樣也許代碼的SelectionChanged事件:

private void richTextBox1_SelectionChanged(object sender, EventArgs e) 
{ 
    // you should check if there is no text selected 
    // or else any selection will be colored immediately: 
    if (richTextBox1.1.SelectionLength == 0) 
     richTextBox1.1.SelectionColor = yourNewColor; 
} 

和往常一樣,如果你想要的顏色的部分是已經那裏有一個新的顏色,你需要選擇該部分,並再次設置顏色。最好使用這個調色板!使用一些帶顏色的Labels你可能會這樣寫:

private void colorLabel_Click(object sender, EventArgs e) 
{ 
    Color yourNewColor= ((sender) as Label).BackColor; 
    richTextBox1.1.SelectionColor = yourNewColor; 
} 

如果你願意,你可以用更豐富的調色板圖像中的Panel's BackgroundImage和代碼及其MouseClick事件:

private void panel1_MouseClick(object sender, MouseEventArgs e) 
{ 
    Color c = ((Bitmap)panel1.BackgroundImage).GetPixel(e.X, e.Y); 
    if (e.Button.HasFlag(MouseButtons.Left)) 
    { 
     richTextBox1.SelectionColor = c; 
    } 
    else // pick new BackColor: 
    { 
     richTextBox1.SelectionBackColor = c; 
    } 
} 
+0

我已經添加了這個代碼,它將數據插入到我的期望的位置但不改變文本顏色。 string insertText = Text; int selectionIndex = richTextBox1.SelectionStart; richTextBox1.SelectionStart = selectionIndex; richTextBox1.Text = richTextBox1.Text.Insert(selectionIndex,insertText); richTextBox1.SelectionLength = 0; richTextBox1.SelectionColor = Color.Blue; –

+0

'richTextBox1.Text ='這是一個錯誤。切勿以任何格式更改RTB的Text屬性,否則會弄亂格式。要按代碼插入文本,請將SelectionStart設置爲所需的位置,SelectionLength = 0並寫入SelectedText = yourNewText。 - 您需要清楚發生什麼是突發事件:用戶輸入新文本或用戶顏色現有文本或代碼添加/插入新文本或代碼重新着色文本。您始終需要使用SelectionColor = newColor,但預配置會有所不同。 – TaW

+0

它不會改變顏色。我使用的代碼是: string insertText = Text; int selectionIndex = richTextBox1.SelectionStart; richTextBox1.SelectionStart = selectionIndex; richTextBox1.SelectedText = insertText; richTextBox1.SelectionColor = Color.Blue; –

0

因此,您需要訂閱文本正在從文本框更改的事件,這會給您輸入到光標的文本。

然後它的只是添加文本,作爲陳述,在那裏你可以將不同格式一件簡單的事情,如下所述:

http://www.wpf-tutorial.com/basic-controls/the-textblock-control-inline-formatting/

+0

謝謝,我會怎麼用它爲富文本框? –

+0

其實我想創建文本編輯器就像記事本等 –

+0

啊,這是一個完全不同的問題我的朋友。我想你可以用TextBlock來做到這一點,但我不能告訴你它是否是正確的做法,或者如果有更好的其他方法,對不起 –

相關問題