在 VB6 RichTextBox 中创建文本部分的格式颜色

Posted

技术标签:

【中文标题】在 VB6 RichTextBox 中创建文本部分的格式颜色【英文标题】:Formatting color for creatin text part in VB6 RichTextBox 【发布时间】:2017-02-01 01:01:44 【问题描述】:

所以我有这个实际上是游戏聊天的文本框。当有人键入消息时,它会显示如下:用户名:消息

我想在这里做的是以某种方式使 UserName 文本始终以不同的颜色显示,因此它与实际消息有点分开。

这是我目前使用的代码:

AddChatMsg 0, userName & ": " & theMsg 'send it to the chatbox

Dim curColor As Long 'current text color
Dim userNameLength As Integer 'username length

userNameLength = Len(UserName) 'store username in integer var
With MyForm.ChatText
   curColor = .SelColor 'set curColor
   .SelLength = userNameLength 'set Length
   .SelColor = vbRed 'change color
   .SelText = UserName 'not sure wha this do
   .SelColor = curColor 'update current color var
End With

这实际上效果很好,但是用户名仅在第一行是红色的:

如何使它适用于每一行?此外,如果可能的话,将字体更改为粗体将会很棒。谢谢!

【问题讨论】:

【参考方案1】:

将用户名和消息分开,然后设置颜色并单独编写它们,例如调用为:

AddChatMsg "DonaldTrump", "I like to grab em"

使用:

Sub AddChatMsg(UserName As String, theMsg As String)
    Dim curColor As Long 'current text color
    With MyForm.ChatText
        curColor = .SelColor
        .SelStart = Len(.Text) 'ensure we are at the end
        .SelColor = vbRed
        .SelBold = True  'write in bold
        .SelText = UserName
        .SelBold = False
        .SelColor = curColor
        .SelText = ": " & theMsg & vbCrLf
    End With
End Sub

【讨论】:

那行不通。整个聊天框变得一团糟,发送的文本根本不显示,我在聊天框中看到的只是 4: 其中 4 是红色和粗体,而 : 是常规的黑色。 它对我来说很好用,如果你通过它只会显示 4 4 请注意,我的代码在您的示例中不包含或使用 AddChatMsg 0, 中的 0,因为它似乎没有被使用,只传递 2 个字符串。 也许我们有误会什么的。这是聊天框正常工作方式的简短视频:i.gyazo.com/2152d00700553c492561d9b6082efe50.mp4 我只希望用户名(在本例中为“测试”)为红色和粗体,其余部分应保持原样。这就是当我像这样使用你的代码:不能把代码放在这里,因为我剩下的字符用完了,所以这是图片:i.gyazo.com/552578a98bb777d7e51add260a71ec1f.png 使用你的代码时会发生这种情况:i.gyazo.com/2b9981b6fab4d454e50a8ba21806452f.mp4 谢谢。 我的意思是这样使用它:1drv.ms/u/s!Ao96GSLZTCw-sy0wmIMxxXR00l_T

以上是关于在 VB6 RichTextBox 中创建文本部分的格式颜色的主要内容,如果未能解决你的问题,请参考以下文章

vb文本编辑器RichTextBox文本属性设置问题

如何将 RichTextBox 文本保存到文本资源文件?

如何在VB6中创建标准DLL?

我在 vb6(winsock) 中创建的客户端/服务器程序不能在 WAN 上运行,但可以在 LAN 上完美运行 为啥?

VB6.0用richtextbox控件读word文档

尝试在将文本文件分成部分的对象类中创建函数(Java)