如何使用VB.NET以编程方式在Rich TextBox中添加粗体文本

我有这个代码:

print_text.Text = "Patient number: " + ds.Tables("patients").Rows(0).Item(0) print_text.AppendText(Environment.NewLine) print_text.Text = print_text.Text + "Last name: " + ds.Tables("patients").Rows(0).Item(1) print_text.AppendText(Environment.NewLine) 

现在上面的数据我以编程方式添加,并且工作正常。 但是在上面的代码中,我想以粗体字体添加Patient numberLast name

使用RichTextBox ,为什么不使用RTF呢?


例:

 Sub Main Dim f = new Form() Dim print_text = new RichTextBox() With {.Dock = DockStyle.Fill} f.Controls.Add(print_text) Dim sb = new System.Text.StringBuilder() sb.Append("{\rtf1\ansi") sb.Append("This number is bold: \b 123\b0 ! Yes, it is...") sb.Append("}") print_text.Rtf = sb.ToString() f.ShowDialog() End Sub 

结果:

带有粗体文本的RichTextBox

MSDN


这样,您还可以轻松地将RTF内容包装到扩展方法中:

 Module RtfExtensions  Public Function ToRtf(s As String) As String Return "{\rtf1\ansi" + s + "}" End Function  Public Function ToBold(s As String) As String Return String.Format("\b {0}\b0 ", s) End Function End Module 

并使用它

 Dim text = "This number is bold: " + "123".ToBold() + "! Yes, it is..." print_text.Rtf = text.ToRtf() 

使用RichTextBox.SelectionFont属性。
请查看这些MSDN链接,了解如何执行此操作: 链接1和链接2

希望能帮助到你。
编辑:

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim len As Integer RichTextBox1.Text = "Patient number: " + " 12345" RichTextBox1.SelectionStart = 0 RichTextBox1.SelectionLength = "Patient number".Length RichTextBox1.SelectionFont = New Font("Arial", 12, FontStyle.Bold) RichTextBox1.SelectionLength = 0 RichTextBox1.AppendText(Environment.NewLine) len = RichTextBox1.Text.Length RichTextBox1.AppendText("Last name: " + " ABCD") RichTextBox1.SelectionStart = len RichTextBox1.SelectionLength = "Last name".Length RichTextBox1.SelectionFont = New Font("Arial", 12, FontStyle.Bold) RichTextBox1.SelectionLength = 0 End Sub