Se supone que el usuario debe escribir el número de la tarjeta de seguro de salud en el cuadro de texto "numero". El número es de 4 letras y luego de 8 dígitos (LANS10763985). ¡Mi problema es que cuando dejé el cuadro de texto vacío, mi aplicación se bloqueó! ¿Cómo puedo poner un MsgBox que dice ingresar algo? Noob aquí lo siento!

    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)
0
Stéphanie L'ange Renaud 18 ene. 2018 a las 16:48

3 respuestas

La mejor respuesta
  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)
0
Stéphanie L'ange Renaud 18 ene. 2018 a las 17:17

Puede usar el {{X0 }} propiedad de String:

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)

Además, puede verificar si la chiffre son realmente solo dígitos

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
Tim Schmelter 18 ene. 2018 a las 14:01

Puede usar try / catch para evitar que la aplicación se bloquee.

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

Por lo tanto, "intentaría" obtener los valores para numero, lettre, etc., pero tan pronto como aparezca su excepción, lo detectará y en su lugar mostrará un cuadro de mensaje.

No dudes en llamarme donde estoy equivocado en los comentarios, pero espero que esto ayude

-1
L_Church 18 ene. 2018 a las 13:56