首页 > 解决方案 > 不能在文本框中输入超过 9 个数字或删除所有输入的数字

问题描述

所以我正在为学校制作一个程序,该程序应该将温度从摄氏温度转换为华氏温度,反之亦然。该程序运行良好,但是当我尝试在文本框中输入超过 9 个数字时,它崩溃了。当我尝试退格并删除以前输入的数字时,也会出现同样的问题。谁能告诉我为什么会这样?

Private Sub txtEntré_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtEntré.KeyPress
    'Laisse seulement tapper des chiffres dans la boîte de texte
    If cbEntré.SelectedIndex < 0 Then
        txtEntré.ReadOnly = True
    Else
        txtEntré.ReadOnly = False

    End If
    If (e.KeyChar < "0" OrElse e.KeyChar > "9") _
       AndAlso e.KeyChar <> ControlChars.Back Then
        e.Handled = True
    End If


End Sub

Private Sub cb1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbEntré.SelectedIndexChanged
    If cbEntré.SelectedIndex = 1 Then
        cbSortie.SelectedIndex = 0
    ElseIf cbEntré.SelectedIndex = 0 Then
        cbSortie.SelectedIndex = 1
    End If
End Sub

Private Sub txtEntré_TextChanged(sender As Object, e As EventArgs) Handles txtEntré.TextChanged

    Dim Entré As Integer
    Convert.ToInt64(txtEntré.Text)

    If cbEntré.SelectedIndex = 0 Then
        txtSortie.Text = (Entré * 9 / 5) + 32
    ElseIf cbEntré.SelectedIndex = 1 Then
        txtSortie.Text = (Entré - 32) * 5 / 9
    End If

End Sub

结束类

标签: vb.net

解决方案


你的代码似乎遗漏了一些东西,你还没有告诉我们错误。我假设您将文本框中的数据放入 Entré。由于 Entré 是一个整数,它的取值范围是 -2,147,483,648 到 2,147,483,647。超出该范围的任何数字都将失败。这一定是你不能超过 9 个字符的原因(嗯.. 1 作为第一个字符应该可以工作)。

如果您将变量更改为Int64,则范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 更大。


推荐阅读