Bonjour,
j'ai 64 textbox nomées de a1 a a64
j'aimerais tester dans une boucle les textbox vides
merci
Bonjour,
j'ai 64 textbox nomées de a1 a a64
j'aimerais tester dans une boucle les textbox vides
merci
Bonjour,
Quel language ?
Ex : en vb
Pour traiter proprement si tous les TextBox (et seulement ceux-ci) sont dans un conteneur (panel, groupbox (, form)).
Appel TestTextBox(Panel1).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Sub TestTextBox(ByVal conteneur As Control) For Each txt As TextBox In conteneur.Controls.OfType(Of TextBox)() If txt.Text = "" Then MessageBox.Show("vide") Else MessageBox.Show("renseigné") Next End Sub
Si d'autres Textbox ne sont pas à traiter (noms autres) dans le conteneur
Appel TestTextBox2(Me) (ou Me représente le form par exemple, mais ce pourrait être un panel ou groupbox)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Sub TestTextBox2(ByVal conteneur As Control) For i As Integer = 1 To 64 If DirectCast(conteneur.Controls("a" & i.ToString), TextBox).Text = "" Then MessageBox.Show("vide") Else MessageBox.Show("renseigné") Next End Sub
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
j'ai créé une fonction pour mes calculs j'ai donc mis le code suivant:
et j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Function calculordi1() If b.seul.Checked = True Then Dim conteneur As Control For i As Integer = 1 To 64 If DirectCast(conteneur.Controls("a" & i.ToString), TextBox).Text = "" Then MessageBox.Show("vide") Else MessageBox.Show("renseigné") Next
la variable conteneur est utilisée avant qu'une valeur ne lui est été assignée.
voila, ca plante? merci pour votre aide
Normal aucun contrôle n'est associé à conteneur.
Regardez l'utilisation de mon code dans les appels
Panel1 étant un contrôle existant sur la form.
Code : Sélectionner tout - Visualiser dans une fenêtre à part TestTextBox(Panel1)
La fonction TestTextBox reçoit le contrôle Panel1 et travaille avec celui-ci. (elle l'assigne à conteneur)
Dans votre déclaration Dim conteneur As Control conteneur vaut nothing, aucune valeur ne lui est assigné.
- Soit vous l'utilisez comme paramètre comme dans mon exemple,
- soit vous utilisez directement le contrôle (présent sur votre form ou la form) qui contient vos TextBox
Mais s'ils sont tous dans un conteneur (panel ou groupbox) et seulement eux, il est préférable d'utiliser la 1 ère méthode, c'est plus propre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part If DirectCast(MonPanel.Controls("a" & i.ToString), TextBox).Text = "" Then MessageBox.Show("vide") Else MessageBox.Show("renseigné")
Le Cours VB.NET de Philippe Lasserre est une mine d'information, très bien pour apprendre.
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
C'est bon, ça marche, j'avais déclaré 2 fois la variable!!!
voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Function calculordi1() If b.seul.Checked = True Then compteur = 0 For i As Integer = 1 To 64 If DirectCast(Panel1.Controls("a" & i.ToString), TextBox).Text = "" Then compteur = compteur + 1 Next a.erreur.Text = compteur a.erreur.Visible = True
C'est légèrement accessoire, mais le DirectCast ne sert à rien ; la propriété Text est définie au niveau de la classe Control, ce qui est le résultat de l'indéxeur sur Controls donc pas besoin de passer par TextBox
Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
À quelle heure dormez-vous ?
Censément, quelqu'un de sensé est censé s'exprimer sensément.
Exact, directCast pourra servir pour accéder aux propriétés spécifiques d'un contrôle.
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager