2016-05-12 75 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来做到这一点,但我不能告诉你它是否是正确的做法,或者如果有更好的其他方法,对不起 –

相关问题