Rich Text Box-Bold

问题描述 投票:13回答:5

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

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

任何可能导致这种情况的想法?预先感谢!

c# richtextbox
5个回答
10
投票

此行是一个问题:

textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\r\n";

您正在使用此新版本的字符串替换格式和文本,并且可能从上次更新中获取了粗体。

尝试改用AppendText:

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

17
投票
 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");

希望这会有所帮助:)


10
投票

这是我曾经使用的一些代码:

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创建新行。您还可以进行下划线等操作。我发现像这样构建String比应用属性更容易。


3
投票

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

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

它将是:

此为粗体


2
投票

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

MSDN: Code: Formatting Characters in Bold in a RichTextBox Control (Visual C#)

由于文本框内容的增长,处理选择实体可能最终变得很麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.