vb.net - 多色RichTextBox

时间:2011-03-22 23:39:14

标签: vb.net user-interface textbox richtextbox

我想在我的richtextbox多色中创建一行文本。我已经尝试过在网上提供的各种实现,并阅读了SelectedText和其他主题,但似乎无法按照我想要的方式使用它。

这是我到目前为止所拥有的

RichTextBox1.Text = "This is black "
RichTextBox1.SelectionFont = New Font("Microsoft Sans Serif", 8.25, FontStyle.Bold)
RichTextBox1.SelectionColor = Color.Green
RichTextBox1.SelectedText = "[BOLD GREEN]"
RichTextBox1.Text = RichTextBox1.Text + " black again"

我想要的颜色用文字表示。会发生什么:整行变为绿色,“[BOLD GREEN]”出现在文本框的开头而不是内联。

我希望它像这样读:“这是黑色的”黑色。 “[BOLD GREEN]”为绿色,“black again”为黑色。

1 个答案:

答案 0 :(得分:5)

你想要实现的目标并不是很清楚。我不确定我对括号格式的理解几乎和我在Paint中模拟的图像一样。但无论如何都要进行......

我怀疑您的现有代码存在一些问题。首先是插入新文本时光标的位置。 后,之前实际插入,因为插入标记位于何处。要解决这个问题,您需要手动移动它。

您还要在代码末尾的Text属性中分配一个文本字符串,这不保留现有的格式信息。我怀疑你最简单的事就是使用AppendText method,而不是。

最后,我建议使用simpler overload创建一个新字体,因为您唯一想要更改的是样式。使用它的优点是您不必在代码中对字体的名称和大小进行硬编码,以防您以后想要更改它。

请尝试将代码重写为此代码:

' Insert first snippet of text, with default formatting
RichTextBox1.Text = "This is black "

' Move the insertion point to the end of the line
RichTextBox1.Select(RichTextBox1.TextLength, 0)

'Set the formatting and insert the second snippet of text
RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Bold)
RichTextBox1.SelectionColor = Color.Green
RichTextBox1.AppendText("[BOLD GREEN]")

' Revert the formatting back to the defaults, and add the third snippet of text
RichTextBox1.SelectionFont = RichTextBox1.Font
RichTextBox1.SelectionColor = RichTextBox1.ForeColor
RichTextBox1.AppendText(" black again")

结果如下:

sample RichTextBox with formatted text