Exposé du problème
Soit 3 Forms Frm1,Frm2 et FRm3 en VB 6.0
Sur chacune des formes 3 contrôles Tetbox : TextBox1,TextBox2,TextBox3
Dans un module nous pouvions écrire en VB 6.0
Public Sub Efface(Feuille as form)
With Feuille
.TextBox1.Text = "" ' le premier caractère est un point
.TexttBox2.Text ="" ' idem
.TextBox3.Text = "" ' idem
End With
End sub
Dans n'importe quelle feuille en faisant Efface(Me) on effaçait les 3 TextBox de la feuille en appelant la procédure publique contenue dans le module
Ma question : comment faire pareil sous VB net ? une procédure identique dans un module avec des noms de contrôles identiques agissant sur des feuilles différentes : cela évite de taper X fois la même procédure dans toutes les feuilles
Merci à tous pour vos réponses et A +
GRENIER Alain
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 18 févr. 2008 à 23:59
salut,
(je teste en même temps)
les objets sont implicitement déclarés en FRIEND DIM WITHEVENTS, et non plus public pour l'objet, et private pour les events
c'est pourquoi le form. ne donne pas accès au nom des composants
et en forçant (testé) çà donne une double déclaration = erreur
perso je tenterai comme çà mais sans certitude :
Public Sub Efface(ByRef Feuille As Form)
With Feuille
For Each TB As System.Windows.Forms.Control In Feuille.Controls
Select Case TB.Name
Case "TextBox1", "TextBox2", "TextBox3" : TB.Text = String.Empty
End Select
Next TB
End With
End Sub
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Merci PCPT
Tu m'as donné une piste intéressante
Par contre je cherche à accéder dans la Sub Efface à un TextBox particulier parmi les 3 Textbox et non à tous les TextBox ( par de boucles For Each.... Next )
Je me penche là-dessus ce soir et je vous dirais ce qu'il y en est
Bonne journée à tous et Merci
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 19 févr. 2008 à 08:53
beh le case sur tb.name est là pour çà non?
et pour ajouter le filtre de type (comme le proposait jrivet), if tb.gettype.name="TextBox" then semble fonctionner mais il y a peut-être plus propre (???) - pas mon domaine ^^
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 20 févr. 2008 à 08:29
Salut,
Euh.... Oui admettons... et si un jour tu as une feuille avec 4 Textbox (ou plus d'ailleurs), tu ne pourras pas utiliser cette fonction.
Dommage de faire du code "mort" d'avance tu ne trouve pas?
NOTE: ceci n'est qu un avis et n'as pas pour but de te décourager.
La procédure mise en exemple est toute simple alors que les vraies procédures de mon projet sont bien plus complexes . Je suis en train de mettre en VB net le projet "Accès Disques et Partitions" dont je suis l'auteur et plusieurs feuilles de ce projet contiennent des contrôles identiques avec des Subs identiques.En mettant ces subs dans un module je peux agir sur ces contrôles depuis la feuille en cours en appellant les Subs dans le module sans à avoir à écrire à chaque fois la Sub dans le code de la feuille
en tout cas cela me satisfait pleinement et je te remercie de tes encouragements et de ton avis éclairé
PS : ce sont mes débuts en VB net : alors parfois je tatonne un peu