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