富文本框 - 大胆

Tom*_*m O 13 c# richtextbox

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

我正在创建一个聊天客户端,所以我有一个分成行的富文本框,消息如下:{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);
Run Code Online (Sandbox Code Playgroud)

第一条消息,它完全正常,名称以粗体显示.但是当我添加第二条消息时,即使第二轮我选择了起始索引(这个例子是37),一切都变成了粗体,但是所有过去的消息都变成了粗体!

任何可能导致这种情况的想法?提前致谢!

Suj*_*jay 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");
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)


Lar*_*ech 10

这行是个问题:

textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\r\n";
Run Code Online (Sandbox Code Playgroud)

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

请尝试使用AppendText:

textBox.AppendText(roomChatMessage.from + ": " + roomChatMessage.text + "\r\n");
Run Code Online (Sandbox Code Playgroud)


Jon*_*lis 9

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

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(@"}");

rtxtRequest.Rtf = sb.ToString();
Run Code Online (Sandbox Code Playgroud)

如果你追加@"\ rtf1\ansi",你可以使用\ b和\ b0在字符串中声明粗体.而\ line创建了一个新行.你也可以做下划线等.我发现像这样构建String比应用属性更容易.


Bog*_*dan 5

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

richTextBox1.Rtf = @"{\rtf1\ansi This is in \b bold\b0.}";
Run Code Online (Sandbox Code Playgroud)

这将是:

这是粗体