IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Check textbox vide


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Par défaut Check textbox vide
    Bonjour,

    En parcourant vos forums, je suis tombé sur un code qui m'a bien plus dans sa syntaxe et plutôt utile pour un utilisateur. Cependant, il est fait pour VB6 et antérieur, donc je n'arrive pas à l'adapter en VB.NET :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Dim ctl As Control
    Dim name As Object
     
    Private Sub Command1_Click() 'pour le test
     
    CheckIftxtEmpty frm, ctl
     
    End Sub
     
    Sub CheckIftxtEmpty(frm As Form, ctl As Control)
        Dim Rep As String
        For Each ctl In Controls
            If TypeOf ctl Is TextBox Then
                If Trim(ctl.Text) = "" Then
                  Rep = MsgBox("Le champ: " & ctl.name & "est vide, Veuillez        remplir ?", vbYesNo)                  'Affiche le nom de la textbox vide
                  If Rep = vbYes Then
                        ctl.SetFocus         'met le focus sur le champ vide
                        Exit For
                  End If
                End If
            End If
        Next ctl
    End Sub
    A la base, ce n'est pas pour une "windows form" mais pour une page en ASPX donc je ne connais pas le mot clé à mettre. Ensuite, il m'indique l'erreur suivante en soulignant "ctl.Text", "SetFocus" & "ctl.name" :
    'Text', 'name', 'SetFocus' n'est pas un membre de 'System.Web.UI.Control'.
    Si vous pouviez m'aider, je vous en remercie d'avance

  2. #2
    Membre expérimenté Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Bonjour,

    Tu trouveras la réponse sur ce sujet :
    http://www.developpez.net/forums/d61...-textbox-form/

    En vb.net ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For each c as Control in me.controls
        if c is textbox then
            if c.Text = "" then
                msgbox("Champ vide")
                c.setfocus
                exit sub
            end if 
         end if
    Next

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Par défaut
    Merci de ta réponse, cependant, j'ai le message suivant pour "textbox" dans if c is textbox then
    'TextBox' est un type et ne peut pas être utilisé en tant qu'expression.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Par défaut
    J'ai remodelé le code, il n'y a pas d'erreur dans VS, mais quand je clique sur mon bouton, rien ne se produit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            For Each c As Control In Me.Controls
                If TypeOf c Is TextBox Then
                    If CType(c, TextBox).Text = "" Then
                        MsgBox("Champ vide")
                        'c.setfocus()
                        Exit Sub
                    End If
                End If
            Next

  5. #5
    Membre expérimenté Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For Each c As Control In Me.Controls
                If TypeOf c Is TextBox Then
                    If c.Text = "" Then
                        MsgBox("Champ vide")
                        c.Focus()
                        Exit Sub
                    End If
                End If
            Next
        End Sub
    J'ai testé ce code et il marche (j'ai laissé la valeur c.text comme telle), il affiche bien la boîte de dialogue.

    Vérifie que tes champs ne contiennent pas d'espaces en trop (avec un trim éventuellement)

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Par défaut
    Etrange car moi avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For Each c As Control In Me.Controls
                If TypeOf c Is TextBox Then
                    If c.Text = "" Then
                        MsgBox("Champ vide")
                        c.Focus()
                        Exit Sub
                    End If
                End If
            Next
        End Sub
    J'obtiens une erreur sur "c.Text" :
    'Text' n'est pas un membre de 'System.Web.UI.Control'.

  7. #7
    Membre expérimenté Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Citation Envoyé par Nikko42 Voir le message
    Etrange car moi avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For Each c As Control In Me.Controls
                If TypeOf c Is TextBox Then
                    If c.Text = "" Then
                        MsgBox("Champ vide")
                        c.Focus()
                        Exit Sub
                    End If
                End If
            Next
        End Sub
    J'obtiens une erreur sur "c.Text" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Text' n'est pas un membre de 'System.Web.UI.Control'.
    En effet, chez toi il y a un conflit de référence

    J'ai testé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If CType(c, TextBox).Text = "" Then
    et ça marche bien, donc le souci se situe plutôt dans la valeur de tes textbox

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Par défaut
    Je viens de tester avec ce code sur un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            For Each c As Control In Me.Controls
                If TypeOf c Is TextBox Then
                    If CType(c, TextBox).Text = "" Then
                        MsgBox("Champ vide")
                        c.Focus()
                        Exit Sub
                    End If
                End If
            Next
    Mais il ne se passe rien, et les valeurs dans les textbox, c'est du texte quoi
    De plus, quand je débug, il ne rentre pas dans la boucle If TypeOf .., il ressort de suite

  9. #9
    Membre expérimenté Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Si il y a du texte dans les textbox normal qu'il ne se passe rien

    Edit : Ça coute rien de vérifier ce qui va suivre : es tu sur d'avoir des textbox sur ton formulaire? Et non pas des richtextbox, combobox, etc...

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Par défaut
    Enfin je veux dire qu'il n'y a rien comme valeur
    Sinon, c'est bien des textbox, il y a d'autres types mais je m'occupe des textbox actuellement.

  11. #11
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Si les contrôles de type TextBox se trouvent dans d'autres contrôles (comme par exemple des contrôles de type GrouBox), il ne va rien se passer car tu ne vas jamais tomber sur tes champs de saisie.

    Il faut faire une boucle récursive.

    Je ferais quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public function verif (byval ctl as control) as boolean
       for each elem as control in ctl.controls
          select case elem.gettype
             case textbox
                  if ctype(elem, textbox).text = "" then
                     elem.setfocus
                     return false
                  end if
             case groupbox
                 verif(elem)
          end select
       next
    return true
    end function
    Je ne garantis pas que ce code compile. Je l'ai fait de mémoire directement sur le forum donc il faudra probablement le retoucher un peu. Mais c'est quelque chose dans ce gout là. C'est l'idée à suivre.
    Sur ton bouton, tu appelles la fonction en passant ta form en paramètre et la fonction parcourra tout.

  12. #12
    Membre expérimenté Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    En effet Griftou, j'avais oublié cet aspect "container"...

    Plutôt que de faire un Select Case sur les groupbox, panel, tablelayout, etc, on peux tout aussi bien vérifier si le contrôle contient d'autres contrôles non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If c.Controls.Count > 0 Then ...

  13. #13
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Je n'ai jamais fait comme cela mais à priori, je ne vois pas de raison d'aller contre. Ce serait p-e même plus générique

Discussions similaires

  1. [XL-2003] Comment charger un userfrom avec tous les TextBox vides
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/09/2010, 22h37
  2. Verifier si textbox vides
    Par BenxToutBenx dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/12/2009, 21h50
  3. Réponses: 10
    Dernier message: 17/04/2009, 20h20
  4. probleme textbox vide.
    Par zakaroh dans le forum C#
    Réponses: 20
    Dernier message: 11/08/2008, 10h57
  5. CustomValidator inopérant quand TextBox vide
    Par cyrano_de_bergerac dans le forum C#
    Réponses: 1
    Dernier message: 14/01/2008, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo