For Each probleme

Résolu
Babynini Messages postés 7 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 11 mars 2007 - 10 mars 2007 à 23:01
Babynini Messages postés 7 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 11 mars 2007 - 11 mars 2007 à 05:55
Bonjour,
bon voila, je fais un travail pour l'école. Je tente de faire un For each et ça ne fonctionne pas. Je veux que mon for each prennent tous les TextBox du formulaire et les efface. voici mon bout de code

   Private Sub btnEffacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEffacer.Click
        Dim i As New TextBox
        For Each i In Me.Controls
            EffacerContenu(i)
        Next
    End Sub

    Private Sub EffacerContenu(ByVal contenu As Control)
        contenu.Text = ""
    End Sub

Il n'y a pas d'erreur détecté. Mais lorsque je démarre le déboguage et je pèse sur le bouton effacer l'erreur suivante apparaît:
Unable to cast object of type 'System.Windows.Forms.PictureBox' to type 'System.Windows.Forms.TextBox'.

Svp, repondez-moi. Je vous remercis de partager vos connaissances avec moi :P

17 réponses

jnbrunet Messages postés 258 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 13 novembre 2012
11 mars 2007 à 05:50
tu as probablement mis les textbox dans un GroupBox

Solution:

Dim i As Control
        For Each i In TonGroupeBox.Controls
            If TypeOf i Is TextBox Then i.Text = ""
        Next i

-Jn-
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 mars 2007 à 23:09
Bonsoir

Oui ?
 Dim i As New TextBox ne sert à rIen dès lors que tu écris ce que tu écris ensuite 

La  propriété text ne s'appliquant qu'aux textboxes, il ne faut pas t'étonner de ce que ta boucle, qui parcourt tous les contrôles, génère une erreur lorsque le contrôle sur lequel elle arrive n'est pas une textbox !

Suggestion : intéresse-toi  à TypeOf (aide en ligne) et utilise-le pour ne traiter que tes textboxes
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2007 à 23:12
Vu ton code, tu n'es pas en VB6 comme la rubrique ou tu as posté le suggere mais bien en VB.Net

Quelques petites corrections à ton code :

        Private Sub btnEffacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnEffacer.Click
                Dim i As Control
                For Each i In Me.Controls
                        EffacerContenu(i)
                Next
        End Sub

        Private Sub EffacerContenu(ByVal contenu As Control)
                If TypeOf contenu Is TextBox Then
                        contenu.Text = ""
                End If
        End Sub

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2007 à 23:15
Tu pourrais aussi faire ceci, plus propre même puisque moins d'appel de fonction.

        Private Sub btnEffacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEffacer.Click
                Dim i As Control
                For Each i In Me.Controls
                        If TypeOf contenu Is TextBox Then EffacerContenu(i)
                Next
        End Sub

        Private Sub EffacerContenu(ByVal contenu As Control)
                contenu.Text = ""
        End Sub

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

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

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2007 à 23:16
zut, faut lire If TypeOf i Is TextBox Then EffacerContenu(i)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 mars 2007 à 23:18
coucou !
Pourquoi l'enviyer systématiquement à EffacerContenu ?

Je ferais plutôt ce test de TypeOf dans la boucke elle même pour faire une économie de va et vient...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 mars 2007 à 23:19
Ahhhh... Voilà ...

Sauf s'il veut faure des tests différents, selon des contrôles différents, avec des effets différents...
Nous y sommes, maintenant
0
Babynini Messages postés 7 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 11 mars 2007
10 mars 2007 à 23:23
Je suis désolée d'avoir posté dans la mauvaise section.
Pour ce qui est de tes réponses casy, cela ne fonctionne pas, rien ne s'efface :(

merci beaucoup de vos réponses.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 mars 2007 à 23:26
Corrige (lis la correction de Casy)

If TypeOf contenu Is TextBox Then
EffacerContenu(i)
¨par
If TypeOf i 
Is TextBox Then EffacerContenu(i)
0
Babynini Messages postés 7 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 11 mars 2007
10 mars 2007 à 23:27
oui, j,avais remarqué l'erreur, mais ça ne fonctionne pas quand même :(

Merci encore
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 mars 2007 à 23:30
Ih ....

Alors essaye directement et dis-nous (il y a ubn truc, là ...)

Private Sub btnEffacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEffacer.Click
                Dim i As Control
                For Each  i  In Me.Controls
                        If TypeOf i Is TextBox Then 
i.text = ""
          Next
        End Sub
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 mars 2007 à 23:32
Hé... dis-nous aussi :

ce code est mis sur quelle Form ?
Sur celle des textboxes à effacer, j'espère ....
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 mars 2007 à 23:47
Et ce sont bien des TextBoxes, que tu veux effacer ? Par un autre contrôle (des RichTextBoxes, par exemple ...) ?
0
Babynini Messages postés 7 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 11 mars 2007
10 mars 2007 à 23:52
Oui, j'utilise bel et bien le bon form...

Pour ce qui est des textbox, on dirait qu'il ne veut pas la faire pour les textbox, mais j'essais avec exemple, le maskedtextBox et sa fonctionne.... :O
0
Babynini Messages postés 7 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 11 mars 2007
10 mars 2007 à 23:55
Oui ce sont les textboxes que je veux effacer! j'en ai comme 6. J'ai vérifié pour être certaine et c'est des textbox
0
Babynini Messages postés 7 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 11 mars 2007
11 mars 2007 à 00:03
Bon, ce n'est pas grave, je vais le faire pour chaque textbox.

Merci beaucoup de votre aide
0
Babynini Messages postés 7 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 11 mars 2007
11 mars 2007 à 05:55
merci beaucoup jnbrunet, tu as réglé mon probleme
0
Rejoignez-nous