繁体   English   中英

如何格式化RichTextBox括号内的文本?

[英]How to Format text within bracket for RichTextBox?

我有一个字符串,如: [1]新年快乐[2]生日快乐[3]在一起快乐 ,我想将数字1,2,3格式化为红色。 因此,我将字符串放入RichTextBox并按照以下代码进行搜索和格式化:(我要做的是,找到“ [”和“]”并保存到全局变量(i,j),然后每次我得到一个一组新的i,j格式化事件被触发。但是,它没有达到我的预期。:(

Public i, j As Integer
 Dim s As String = "[1] Happy New year [2] Happy Birthday [3] Happy Together"

'Button Code
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim count As Integer = 0
        rtfbuffer.Text = s
        rtfbuffer.Font = New Font("Tahoma", 12, FontStyle.Bold)
        rtfbuffer.ForeColor = Color.Black

        Do While count < s.Length - 1


            If s.Chars(count) = "[" Then
                i = count
                count += 1
            ElseIf s.Chars(count) = "]" Then
                j = count + 1

                count += 1
                rtfbuffer.Select(i, j)
                rtfbuffer.SelectionColor = Color.Red

            Else
                count += 1
            End If

            Loop

最终,我只能在“ []”红色内得到第一个文本。.看一下代码,我不明白为什么它没有通过剩余的文本。 你能告诉我如何纠正它吗? 非常感谢〜

Select方法的第二个参数是要选择的文本的长度。 参见MSDN

Public Sub Select(以Integer开头,以Integer开头的长度)

参量

start类型:System.Int32在文本框中当前文本选择中的第一个字符的位置。

length类型:System.Int32要选择的字符数。

所以,在你的代码,当你调用Select ,你可以通过提供计算长度选择(然后突出显示) j - i ,而不是只是j 它在您的代码中第一次起作用,因为'end index'( j )实际上与长度相同,即3。

rtfbuffer.Select(i, j - i)
rtfbuffer.SelectionColor = Color.Red

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM