富格文本框-粗体

本文关键字:粗体 文本 | 更新日期: 2023-09-27 18:19:40

我知道这里有很多"如何加粗文本"的问题,但没有一个答案有帮助,我认为可能是富文本框是在运行时创建的。

我正在制作一个聊天客户端,所以我有一个按行划分的富文本框,消息如下:{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),所有内容都会变为粗体,但所有过去的消息也会变为黑体!

知道是什么原因造成的吗?提前感谢!

富格文本框-粗体

 ObjRichTextBox.SelectionFont = new Font(ObjRichTextBox.Font, FontStyle.Bold);
 ObjRichTextBox.AppendText("BOLD TEXT APPEARS HERE");
 ObjRichTextBox.SelectionFont = new Font(ObjRichTextBox.Font, FontStyle.Regular);
 ObjRichTextBox.AppendText("REGULAR TEXT APPEARS HERE");

希望这有帮助:)

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

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在字符串中声明粗体。并且''line创建一条新行。你也可以做下划线等。我发现像这样构建字符串比应用属性更容易。

这一行有问题:

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.}";

它将是:

这在bold

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

MSDN:代码:在RichTextBox控件(Visual C#)中用粗体格式化字符

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

我知道这是一篇旧文章,但我想在这里添加它,因为MSDN文档并没有很好地解释这一点。属性SelectionFont不再存在,至少在.Net 5 中不存在

 RichTextBox.Selection.ApplyPropertyValue(FontWeightProperty, FontWeights.Bold);