Visual studio 标签文本显示不正确

Visual studio 标签文本显示不正确,visual-studio,visual-studio-2017,Visual Studio,Visual Studio 2017,例如,当我输入“adgj”时,标签的文本应该是“2345”,但当我运行它时,标签的文本是“2”代码失败的原因是,在子字符串上,您没有将长度限制为1。这意味着strWord的内容将是: Private Sub btnFind_Click(sender As Object, e As EventArgs) Handles btnFind.Click lblNumber.Text = "" strLttrInput = InputBox("Please enter a letter o

例如,当我输入“adgj”时,标签的文本应该是“2345”,但当我运行它时,标签的文本是“2”

代码失败的原因是,在子字符串上,您没有将长度限制为1。这意味着strWord的内容将是:

Private Sub btnFind_Click(sender As Object, e As EventArgs) Handles btnFind.Click
    lblNumber.Text = ""
    strLttrInput = InputBox("Please enter a letter or phrase:", "Find the corrresponding number to the letter(s)")
    With strLttrInput
        .ToLower()
        .Trim()
    End With
    intPhraseIndx = strLttrInput.Length - 1
    Dim strWord(intPhraseIndx) As String
    Dim strOutput As String = String.Empty

    For intCount = 0 To intPhraseIndx
        strWord(intCount) = strLttrInput.Substring(intCount)
    Next

    For intCount = 0 To intPhraseIndx
        Select Case strWord(intCount)
            Case "a", "b", "c"
                lblNumber.Text = lblNumber.Text & "2"
            Case "d", "e", "f"
                lblNumber.Text = lblNumber.Text & "3"
            Case "g", "h", "i"
                lblNumber.Text = lblNumber.Text & "4"
            Case "j", "k", "l"
                lblNumber.Text = lblNumber.Text & "5"
            Case "m", "n", "o"
                lblNumber.Text = lblNumber.Text & "6"
            Case "p", "r", "s"
                lblNumber.Text = lblNumber.Text & "7"
            Case "t", "u", "v"
                lblNumber.Text = lblNumber.Text & "8"
            Case "w", "x", "y"
                lblNumber.Text = lblNumber.Text & "9"
        End Select

        If strWord(intCount) = "q" Then
            lblNumber.Text = lblNumber.Text & "q"
        End If
        If strWord(intCount) = "z" Then
            lblNumber.Text = lblNumber.Text & "z"
        End If
    Next
End Sub
可以通过指定子字符串的长度来解决此问题:

strWord(0) = adgj
strWord(1) = dgj
strWord(2) = gj
strWord(3) = j
作为旁注,不需要循环两次并存储字母,您可以这样做:

strWord(intCount) = strLttrInput.Substring(intCount, 1)

使用visual studio 2017 for vb。我忘了删除那一行,我尝试了很多方法让它工作。String.SubString()的工作方式与您想象的不同。使用调试器很容易看到。顺便说一句,谢谢你的帮助………我总是过度思考,这几乎总是导致冗余和无法直接思考。我不确定这是否与上面的代码有关,因为消息指出不能将字符串转换为布尔值,这在这里不会发生。如果需要,可以在“项目属性->编译设置”中将“严格”选项关闭
For intCount = 0 To intPhraseIndx
    Select Case strLttrInput.Substring(intCount, 1)
        ...
    End Select
Next