我想在我的 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]”为绿色,“再次黑色”为黑色。
最佳答案
目前还不清楚您想要实现的目标。我不确定我对括号格式的理解几乎与您在 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")
结果将如下所示:
关于vb.net - 多色 RichTextBox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5399208/