ArgumentOutOfRangeException VB

时间:2018-01-18 13:48:44

标签: vb.net arguments substring

用户应该在“numero”文本框中写下健康保险卡号。数字是4个字母,然后是8个数字(LANS10763985)。 我的问题是,当我将文本框留空时,我的应用程序崩溃了! 我怎么才能放一个说出来输入东西的MsgBox !!!! Noob抱歉!

main()

3 个答案:

答案 0 :(得分:1)

您可以使用String的{​​{3}}:

If txtNumero.Text.Length <> 12 Then
    MessageBox.Show("The number must have 12 letters, like LANS10763985")
    Return
End If

Dim numero As String 'Numéro d'assurance maladie
Dim lettre As String 'Quatre premières lettres 
Dim chiffre1 As String 'Quatre premiers chiffres
Dim chiffre2 As String 'Quatre derniers chiffres

numero = txtNumero.Text
lettre = txtNumero.Text.Substring(0, 4)
chiffre1 = txtNumero.Text.Substring(4, 4)
chiffre2 = txtNumero.Text.Substring(8, 4)

此外,你可以检查chiffre是否真的只是数字

If Not chiffre1.All(AddressOf Char.IsDigit) Then
    MessageBox.Show("The first chiffre must contain only digits and no letters")
    Return
ElseIf Not chiffre2.All(AddressOf Char.IsDigit) Then
    MessageBox.Show("The second chiffre must contain only digits and no letters")
    Return
End If

答案 1 :(得分:0)

  Private Sub btnResultat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnResultat.Click



    Dim numero As String 'Numéro d'assurance maladie
    Dim lettre As String 'Quatre premières lettres 
    Dim chiffre1 As String 'Quatre premiers chiffres
    Dim chiffre2 As String 'Quatre derniers chiffres

    numero = txtNumero.Text 


    If numero.Length <> 12 Then 'Verifier que le numéro a bel et bien 12 caractère
        MsgBox("Ce numéro est invalide. Veuillez inscrire quatre lettres suivi de 8 chiffres pour un total de 12 caractères")

    Else

        lettre = txtNumero.Text.Substring(0, 4)
        chiffre1 = txtNumero.Text.Substring(4, 4)
        chiffre2 = txtNumero.Text.Substring(8, 4)

答案 2 :(得分:-1)

您可以使用try / catch来阻止应用崩溃。

Dim numero As String 'Numéro d'assurance maladie
Dim lettre As String 'Quatre premières lettres 
Dim chiffre1 As String 'Quatre premiers chiffres
Dim chiffre2 As String 'Quatre derniers chiffres


Try
    numero = txtNumero.Text
    lettre = txtNumero.Text.Substring(0, 4)
    chiffre1 = txtNumero.Text.Substring(4, 4)
    chiffre2 = txtNumero.Text.Substring(8, 4)
Catch ex As ArgumentOutOfRangeException
    MessageBox.Show("Format is incorrect!")
End Try

所以你会“尝试”获取numero,lettre等的值。但是一旦你的异常显示它就会捕获它,而是显示一个消息框。

请在评论中随意给我打电话,但希望这会有所帮助