2010-05-10 10 views
0

J'ai programmé une sous-procédure qui sera appelée dans la procédure principale (appelée par l'événement mainForm), pour valider les entrées avant le calcul principal. Maintenant, je cherche un moyen d'annuler le calcul et de recentrer le mainForm si certaines entrées sont incompatibles. Je pense qu'il est inutile d'utiliser l'instruction Try-Catch pour intercepter l'erreur de calcul, car je connais sa source et il doit être évité pour les performances du code. Est-ce que quelqu'un a une solution?Annuler le calcul si l'entrée-discordance a été trouvée

Répondre

1

Si vous voulez laisser un sous-programme plus tôt, il vous suffit de dire Return.

Modifier.

Il semble que vous appeliez une méthode qui appelle une autre méthode. Demandez à la seconde méthode de renvoyer un booléen indiquant si l'entrée est valide. Quelque chose comme ceci:

Public Sub CheckMainForm() 
    'First validate the input 
    If Not IsInputValid() Then Return 
    'Next do the rest of your work 
End Sub 
Public Function IsInputValid() As Boolean 
    'Do input validation, if at anypoint something is wrong return false 
    If Not IsNumeric(txtAge.Text) Then Return False 
    If Not IsValidEmail(txtEmail.Text) Then Return False 
    Return True 
End Function 
+0

Salut Chris, je veux faire quelque chose comme ça direct de la sous-procédure mais cela ne peut quitter le sous, pas la procédure principale. Lert Pianapitham –

+0

Ya ... merci, c'est une bonne solution. Mais en fait, j'ai plus de Subs qui utilisent cette méthode valide. Devrais-je réécrire tout cela? ou ai-je d'autres solutions? –

+0

La seule façon de quitter une méthode est de retourner, quitter ou lancer. Lancer est assez cher et ne devrait être utilisé que lorsque vous ne pouvez plus continuer pour une raison ou une autre. Vous devez également modifier chaque méthode avec Try/Catch pour la prendre en charge. La sortie vous laissera dans un état indéterminé et ne passera pas par les méthodes d'appel. Alors oui, je recommanderais de renvoyer un booléen indiquant si la validation des entrées a réussi ou non. –

Questions connexes