そのため、html タグを取り、残りのテキストとは異なる色を付ける関数を 1 つまたは 2 つ作成しようとしています (Visual Studio が のようなキーワードに対して行う方法と同様ですDim
)。私が見つけた唯一の方法は、リッチテキストボックスを使用してから*.SelectionColor = Color.Blue
、または同様のことを行うことです。これを行う他の方法はありますか?テキストボックスが更新されるたびに、すべてのhtmlタグが別の色に変更されたときにそれを読み取るようにしました。これは、非常に短い html ファイルでは問題なく機能しますが、ファイルが大きくなると、時間がかかりすぎて、選択によってカーソルが移動します。
リッチ テキスト ボックス以外のものを使用する必要がある場合でも、これを行う他の方法はありますか? そうでない場合、誰かがこれを改善する方法を見ていますか?
テキストボックスの更新時に実行される 2 つの関数を次に示します。タグは青、属性は赤、引用符内は緑です。
'//////////////////////////////////////////////////////////////////////////
'// 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