因此,我正在尝试创建一个或两个函数,该函数采用 html 标记并将它们的颜色与文本的其余部分不同(类似于 Visual Studio 对诸如 之类的关键字的处理方式Dim
)。我发现的唯一方法是使用富文本框,然后 do*.SelectionColor = Color.Blue
或类似的东西。有没有其他方法可以做到这一点?我这样做了,每当文本框更新时,它都会读取它,并将所有 html 标记更改为不同的颜色。这适用于一个非常短的 html 文件,但是当它们变得更大时,它会花费太长时间,并且选择会移动光标。
那么,有没有其他方法可以做到这一点,即使我必须使用富文本框以外的东西?如果没有,有没有人看到改善这一点的方法?
这是文本框更新时运行的两个函数。标签为蓝色,属性为红色,引号中的内容为绿色。
'//////////////////////////////////////////////////////////////////////////
'// findTag()
'// -finds a tag
'//////////////////////////////////////////////////////////////////////////
Private Function findTag()
Dim tag As String = ""
Dim i As Integer = 0
Dim startTag As Integer
While (i < txtCurrentFile.TextLength - 1)
If txtCurrentFile.Text(i) = "<" Then
startTag = i
While txtCurrentFile.Text(i) <> ">"
tag += txtCurrentFile.Text(i)
i += 1
End While
tag += ">"
colorCode(startTag, tag)
tag = ""
End If
i += 1
End While
Return Nothing
End Function
'//////////////////////////////////////////////////////////////////////////
'// colorCode()
'// -colors different tags accordingly
'//////////////////////////////////////////////////////////////////////////
Private Function colorCode(ByVal startIndex As Integer,
ByVal tag As String)
Dim i As Integer = 0
Dim isAttributes As Boolean = False
Do While (tag(i) <> " " And tag(i) <> ">")
txtCurrentFile.Select(startIndex + i, 1)
txtCurrentFile.SelectionColor = Color.Blue
i += 1
Loop
If i < tag.Length Then
Do Until (tag(i) = ">")
Do Until (tag(i) = Chr(34))
txtCurrentFile.Select(startIndex + i, 1)
txtCurrentFile.SelectionColor = Color.Red
i += 1
Loop
i += 1
Do Until (tag(i) = Chr(34))
txtCurrentFile.Select(startIndex + i, 1)
txtCurrentFile.SelectionColor = Color.Purple
i += 1
Loop
i += 1
Loop
txtCurrentFile.Select(startIndex + i, 1)
txtCurrentFile.SelectionColor = Color.Blue
End If
Return Nothing
End Function