Mode pas à pas (VS2013) étrange.
Bonjour à tous.
Je me suis amusé à regarder mon code ce dérouler en pas à pas pour vérifier que tout ce passe pour le mieux et je me suis rendu compte d'une chose assez curieuse : ma procédure ne ce termine pas que mon pas suivant me reviens au début de la procédure et recommence les instructions...
mon code est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Private Sub Calcul_Prix_De_Vente(sender As Object, e As EventArgs)
Image_TB = sender
If Image_TB.Text.Count = 0 Then
TextBox(Image_TB.Tag * 6 + 4).Text = ""
Else
If Image_TB.Text.Contains(".") Then
Image_TB.Text = Replace(Image_TB.Text, ".", ",")
Image_TB.Select(Image_TB.Text.Count, 0)
ElseIf Not IsNumeric(Image_TB.Text) Then
Image_TB.Select(Image_TB.Text.Count - 1, 1)
Image_TB.SelectedText = ""
Exit Sub
End If
etc... |
En fait, quand je me situe à la ligne : "Image_TB.Text = Replace(Image_TB.Text, ".", ",")", l'instruction suivante ce retrouve à l'entrée de ma procédure : "Private Sub Calcul_Prix_De_Vente(sender As Object, e As EventArgs)" et non pas à l'instruction "Image_TB.Select(Image_TB.Text.Count, 0)". Du coup lors du second passage, ma condition "If Image_TB.Text.Contains(".") Then" est fausse, et continue la suite de la procédure, et à la fin de la procédure, il reviens au début et me passe à l'instruction suivant celle qui m'à fait revenir au début : " Image_TB.Select(Image_TB.Text.Count, 0)" et continue dans la procédure pour finir (sans revenir au début cette fois ci).
Je ne sais pas si vous voyez ce que je veux dire !
Du coup je me dis que mon code est mauvais pas propre et me fait perdre du temps de calcul donc optimisation 0...
Enfin voila je me demande pourquoi il me fait ce cinéma !
Merci.
Il n'y a que les imbéciles qui ne changent pas d'avis
Ma légère digression sur les données temporelles m'a rappelé que je devais ajouter un check dans mon projet en cours pour que l'utilisateur encode une durée valide (i.e. : "08:88" n'étant pas valide).
Du coup, j'allais bêtement code l'événement Validating de mon MaskedTextBox et en le cherchant de la fenêtre des propriétés, je suis tombé sur l'événement TypeValidationCompleted qui s'utilise en conjonction de la propriété ValidatingType.
Je ne connaissais pas du tout car je n'utilise quasi jamais de MaskedTextBox.
Du coup, ce contrôle devient tout à viable sans trop d'effort pour gérer les données numériques. Va par contre falloir être vigilant quant à la culture de l'utilisateur pour savoir s'il faut utiliser la virgule ou le point comme séparateur décimal.