Erreur dans une boucle ?

Résolu
cs_warberzz Messages postés 9 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 9 août 2010 - 6 août 2010 à 21:02
cs_warberzz Messages postés 9 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 9 août 2010 - 7 août 2010 à 12:34
Bonjour tout le monde ! :)

Je fais mes premiers pas dans le visual basic, et j'ai créé une petite boucle pour griser un bouton tant que le champ1 est vide :

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Enabled = False

        Do Until TextBox1.Text.Length > 0
            If TextBox1.Text.Length > 0 Then
                Button1.Enabled = True
            End If
        Loop
    End Sub
End Class


Mais lorsque je lance l'exécution, rien n'apparait à l'écran... je travaille avec visual basic 2010 Express.

Merci à tous !!

8 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
6 août 2010 à 21:27
Salut,

Une boucle n'est pas la solution, car celle-ci ne fonctionnera qu'une fois la fonction appelé, une fois sortie de ta boucle, ce sera fini, peu importe le texte.

Utilise l'événement TextChanged du TextBox, exemple :

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    Button1.Enabled = (TextBox1.Text.Length > 0)
End Sub



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
6 août 2010 à 21:30
c'est normal qu'il n' y ait rien qui se passe parce que dans le lancement de ton application(dans le chargement de ton formulaire) le Textbox1.Text.Length=0.

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...
Visual Basic .Net is the best and vb6.0
3
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
7 août 2010 à 02:13
Bonjour,
Form_Load est la sub qui initialise ta forme, alors comment veux-tu que le TextBox change AVANT QUE LA FEUILLE NE SOIT AFFICHEE ??

Eventuellement, si ton appli nécessite de bloquer la suite tant que le TextBox est vide tu peu mettre la boucle dans Form_Ativate.

A+
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
7 août 2010 à 08:08
lermite222>

On ne met pas une boucle pour ce genre de chose, et ce, peu importe l'événement, c'est du gâchis de ressource pur et simple. Je n'en vois nullement l'intérêt.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
7 août 2010 à 12:24
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles TextBox1.TextChanged, TextBox2.TextChanged
    Button1.Enabled = (TextBox1.Text.Length > 0) AND (TextBox2.Text.Length > 0)
End Sub


Il faut rajouté le Handle du TextBox2, sinon seul l'événement de changement du TextBox1 déclanche la procédure.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
cs_warberzz Messages postés 9 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 9 août 2010
7 août 2010 à 11:26
merci a tous grace a vous j'y vois plus clair :) en gros si la fenetre n'est pas encore chargée une boucle va l'empêcher de passer à la suite

merci encore :)
0
cs_warberzz Messages postés 9 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 9 août 2010
7 août 2010 à 12:00
bon la je passe a une difficulté en plus : que le bouton qoit dégrisé une fois que DEUX textbox sont remplies :

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Button1.Enabled = (TextBox1.Text.Length > 0 AND TextBox2.Text.Length > 0)
    End Sub


mais la le bouton ne se dégrise plus dans aucun cas ...
0
cs_warberzz Messages postés 9 Date d'inscription vendredi 6 août 2010 Statut Membre Dernière intervention 9 août 2010
7 août 2010 à 12:34
trop fort, merci beaucoup ! quand on lit ça au fond c'est logique, mais j'ai pas encore le réflexe d'y penser... en tout cas MERCI BEAUCOUP !!
0
Rejoignez-nous