Nom de TextBox Dynamique | VB.net

Résolu
Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -  
Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tout le monde,

Je suis toujours en train de coder mon application pour un stage, mais je galère à nouveau sur un truc qui me parait simple dans l'idée mais je ne trouve absolument aucune aide qui me corresponde sur le net.

En fait j'ai des TextBox du style :
TB_N_Prenom1 TB_NB_N_1 TB_P_N_1
TB_N_Prenom2 TB_NB_N_2 TB_P_N_2
TB_N_Prenom3 TB_NB_N_3 TB_P_N_3
TB_N_Prenom4 TB_NB_N_4 TB_P_N_4
TB_N_Prenom5 TB_NB_N_5 TB_P_N_5
TB_N_Prenom6 TB_NB_N_6 TB_P_N_6

TB_O_Prenom1 TB_NB_O_1 TB_P_O_1
TB_O_Prenom2 TB_NB_O_2 TB_P_O_2
TB_O_Prenom3 TB_NB_O_3 TB_P_O_3
TB_O_Prenom4 TB_NB_O_4 TB_P_O_4
TB_O_Prenom5 TB_NB_O_5 TB_P_O_5
TB_O_Prenom6 TB_NB_O_6 TB_P_O_6

TB_F_Prenom1 TB_NB_F_1 TB_P_F_1
TB_F_Prenom2 TB_NB_F_2 TB_P_F_2
TB_F_Prenom3 TB_NB_F_3 TB_P_F_3
TB_F_Prenom4 TB_NB_F_4 TB_P_F_4
TB_F_Prenom5 TB_NB_F_5 TB_P_F_5
TB_F_Prenom6 TB_NB_F_6 TB_P_F_6

Voilà en gros mes textbox.

On repère bien que j'ai repris la même forme, avec juste le chiffre qui change, et une lettre en fonction de ce que je veux.

En fait j'aimerais pouvoir utiliser par exemple dans une boucle for : TB_N_Prenom & i.

J'ai tout essayé, ou presque vu que je vous sollicite pour m'aider.

Voilà un aperçu de ce que j'ai tenté :

 For i = 0 To 1 
            myreaderreservation.Read() 
            NBparcatégorie.Connection() = sqlCnx 
            NBparcatégorie.CommandText() = "SELECT COUNT(codeeleve),prenome, prix FROM reservation,eleves,avoir,prixcantine WHERE reservation.codeelever=eleves.codeeleve AND eleves.codeeleve=avoir.codeelevea AND reservation.codeprixr = prixcantine.codeprix AND typerepas = 'RR' AND codeparenta=" & CInt(moncode(0)) & "GROUP BY prenome,prix" 
            myreadercatégorie = NBparcatégorie.ExecuteReader() 

            For j = 0 To NBenffamille.ExecuteScalar - 1 
                myreadercatégorie.Read() 
                Controls("TB_N_Prenom_" & i).Text = myreadercatégorie(1) 
                Controls("TB_NB_N_" & i).Text = myreadercatégorie(0) 
                Controls("TB_P_N_" & i).Text = myreadercatégorie(2) 
            Next 

            myreadercatégorie.Close() 

            NBparcatégorie.CommandText() = "SELECT COUNT(codeeleve),prenome, prix FROM reservation,eleves,avoir,prixcantine WHERE reservation.codeelever=eleves.codeeleve AND eleves.codeeleve=avoir.codeelevea AND reservation.codeprixr = prixcantine.codeprix AND typerepas = 'OC' AND codeparenta=" & CInt(moncode(0)) & " GROUP BY prenome,prix" 
            myreadercatégorie = NBparcatégorie.ExecuteReader() 

            For j = 0 To NBenffamille.ExecuteScalar - 1 
                myreadercatégorie.Read() 
                Controls("TB_O_Prenom_" & i).Text = myreadercatégorie(1) 
                Controls("TB_NB_O_" & i).Text = myreadercatégorie(0) 
                Controls("TB_P_O_" & i).Text = myreadercatégorie(2) 

            Next 

            myreadercatégorie.Close() 

            NBparcatégorie.CommandText() = "SELECT COUNT(codeeleve),prenome, prix FROM reservation,eleves,avoir,prixcantine WHERE reservation.codeelever=eleves.codeeleve AND eleves.codeeleve=avoir.codeelevea AND reservation.codeprixr = prixcantine.codeprix AND typerepas = 'PF' AND codeparenta=" & CInt(moncode(0)) & " GROUP BY prenome,prix" 
            myreadercatégorie = NBparcatégorie.ExecuteReader() 

            For j = 0 To NBenffamille.ExecuteScalar - 1 
                myreadercatégorie.Read() 
                Controls("TB_F_Prenom_" & i).Text = myreadercatégorie(1) 
                Controls("TB_NB_F_" & i).Text = myreadercatégorie(0) 
                Controls("TB_P_F_" & i).Text = myreadercatégorie(2) 

            Next 

            myreadercatégorie.Close() 

        Next 


J'espère avoir été assez explicite pour me faire comprendre :)

Merci d'avance,

Xineroks

4 réponses

  1. Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   3
     
    Ou même s'il faut, faire par index. D'ailleurs je serais curieux de voir les 2 manières.
    J'ai fais ( même présentation ) :
    400 410 420
    401 411 421
    402 412 422
    403 413 423
    404 414 424
    405 415 425

    500 510 520
    501 511 521
    ...
    ...
    etc...
    0
    1. Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   3
       
      J'ai tenté aussi avec :

      dim test as control 
      for each test in me.controls 
          if typeof test is textbox 
              test.name="valeur"     
              test.text="montext"    
          end if 
      
      next 
      



      Le soucis c'est que ça ne correspond pas non plus.
      0
  2. Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   3
     
    Pour faire vraiment plus simple l'explication

    j'aimerais un code qui fonctionne du style :

    for i = 0 to 10
    (textbox & i).text = "unevaleur"
    next

    PS : C'est très urgent, sans ça je ne peux pas avancer
    0
    1. Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   3
       
      Up
      0
    2. Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   3
       
      up
      0
  3. Utilisateur anonyme
     
    Bonjour,

    Il te faudra inévitablement découper le travail :

    Exemple type :

    Private Sub Lecture()
    
    	' ...
    	' code précédent
    	'
    	For j = 0 To NBenffamille.ExecuteScalar - 1
    		myreadercatégorie.Read()
    		ChangeValeurTextBox("TB_F_Prenom_" & i, myreadercatégorie(1))
    		ChangeValeurTextBox("TB_NB_F_" & i, myreadercatégorie(0))
    		ChangeValeurTextBox("TB_P_F_" & i, myreadercatégorie(2))
    	Next
    
    	'
    	' code suivant
    	' ...
    
    End Sub
    
    Private Sub ChangeValeurTextBox(ByVal pNom As String, ByVal pValeur As String)
    
    	Dim Ctrl As System.Windows.Forms.Control
    
    	For Each Ctrl In Me.Controls
    		If Ctrl.GetType Is GetType(TextBox) Then
    			If (Ctrl.Name = pNom) Then
    				Ctrl.Text = pValeur
    			End If
    		End If
    	Next
    
    End Sub
    


    Cdt

    Lupin
    0
    1. Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   3
       
      Salut,

      Merci pour ta réponse, j'essaierais demain ces instructions. Ça m'a l'air beaucoup plus abouti que ce que j'ai trouvé

      A bientôt
      0
  4. Xineroks Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   3
     
    Merci beaucoup à toi !
    La réponse me convient parfaitement, c'est exactement ce que je voulais!
    Ton aide me permet enfin d'avancer.

    Merci encore,

    Cdt,

    Xineroks
    0