C# 富文本框-粗体

C# 富文本框-粗体,c#,richtextbox,C#,Richtextbox,我知道这里有很多关于“如何加粗文本”的问题,但是没有一个答案是有用的,我想可能是富文本框是在运行时创建的 我正在制作一个聊天客户端,所以我有一个按行分割的富文本框,消息如下: {Name}:{Message}\r\n 我想用粗体显示名称,我已经尝试了许多代码示例,但这是我最接近它的工作: int length = textBox.Text.Length; textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\

我知道这里有很多关于“如何加粗文本”的问题,但是没有一个答案是有用的,我想可能是富文本框是在运行时创建的

我正在制作一个聊天客户端,所以我有一个按行分割的富文本框,消息如下: {Name}:{Message}\r\n

我想用粗体显示名称,我已经尝试了许多代码示例,但这是我最接近它的工作:

int length = textBox.Text.Length;
textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\r\n";
textBox.Select(length, roomChatMessage.from.Length);
textBox.SelectionFont = new Font(textBox.Font, FontStyle.Bold);
第一条信息,它工作得非常好,名字是粗体的。但当我添加第二条消息时,所有内容都变为粗体,即使第二次我选择开始索引(本例为37),但所有内容都变为粗体,所有过去的消息也变为粗体

你知道这是什么原因吗?
提前谢谢

我觉得在执行此类操作时使用RichTextBox.Rtf属性可能更容易,如下所述:


因为随着文本框内容的增长,处理选择实体可能会变得很麻烦。

以下是我曾经使用过的一些代码:

var sb = new StringBuilder();
        sb.Append(@"{\rtf1\ansi");
        sb.Append(@"\b Name: \b0 ");
        sb.Append((txtFirstName.Text);
        sb.Append(@" \line ");
        sb.Append(@"\b DOB: \b0 ");
        sb.Append(txtDOBMonth.Text);
        sb.Append(@" \line ");
        sb.Append(@"\b ID Number: \b0 ");
        sb.Append(txtIdNumber.Text);
        sb.Append(@" \line \line ");
        sb.Append(@"}");

richTextBox.Rtf = sb.ToString();

如果附加@“\rtf1\ansi”,则可以使用\b和\b0在字符串中声明粗体。并创建一个新行。您也可以使用下划线等。我发现像这样构建字符串比应用属性更容易。

这一行是一个问题:

textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\r\n";
您正在使用此新版本的字符串替换格式和文本,并且可能正在使用上次更新中的粗体字体

请尝试改用AppendText:

textBox.AppendText(roomChatMessage.from + ": " + roomChatMessage.text + "\r\n");

希望这有帮助:)

在Visual Studio中,您可以使用以下简短代码:

richTextBox1.Rtf = @"{\rtf1\ansi This is in \b bold\b0.}";
它将是:

这是粗体的


另一件需要注意的事情是,您将其分配给.Rtf,而不是.Text。谢谢你的帮助!
richTextBox1.Rtf = @"{\rtf1\ansi This is in \b bold\b0.}";