为 VB 中的重复字词下划线

Underlining repeated words in VB

家庭作业,我需要创建一个像 http://typeracer.com/ 一样工作的程序。

这是我目前所做的:

Dim strContent As String = "the texts the text the text"
Dim arrNum As Integer = 0

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    arrContent = strContent.Split(" ")
    RichTextBox2.Text = strContent
End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    If TextBox1.Text = arrContent(arrNum) + " " Then
        TextBox1.Clear()
        arrNum = arrNum + 1
    End If
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim strSearch As String = arrContent(arrNum)
    Dim intIndex As Integer = RichTextBox2.Find(strSearch, 0, RichTextBoxFinds.WholeWord)
    If intIndex <> -1 Then
        RichTextBox2.SelectionStart = intIndex 
        RichTextBox2.SelectionLength = strSearch.Length            
        RichTextBox2.SelectionFont = New Font(RichTextBox2.Font, FontStyle.Bold)
    End If
End Sub

问题是重复的单词没有下划线,为什么?

它没有加下划线,因为您将它设置为加粗文本,而不是加下划线。我想如果你在 Timer1_Tick 处放置一个断点,你不会命中它,因为你还没有启动计时器;您需要启用定时器(如果尚未启用)并启动它。

将此添加到 Form1_Load

Timer1.Enabled = True
Timer1.Start()

并改变

RichTextBox2.SelectionFont = New Font(RichTextBox2.Font, FontStyle.Bold)

RichTextBox2.SelectionFont = New Font(RichTextBox2.Font, FontStyle.Underline)

我试过了,下划线有效,但您还有其他一些逻辑问题需要解决。如果同一个词在内容中多次出现,则下划线逻辑将失败。当程序第一次启动时,它也不会在第一个单词下划线,而且一旦您在文本框中输入完所有单词,它也会出错,因为数组的索引将越界。但是现在下划线部分可以工作了,你可以开始调试剩下的东西了