Propriété Index perdue de VB6 en VB.Net. Et alors? Je fais comment? [Résolu]

Signaler
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013
-
Messages postés
226
Date d'inscription
mardi 17 octobre 2000
Statut
Membre
Dernière intervention
1 décembre 2010
-
Bonjour,

( je passe du VB6 au Visual Basic 2008 Express - pas toujours facile  )

En VB6 il y a la propriété Index qui me permettait de faire du travail en boucle et donc d'éviter des centaines de lignes de code.

Je suis occupé à transférer manuellement des applications de l'un vers l'autre.

Je ne retrouve plus cette propriété en VB.Net !!  Régression ????

J'ai cherché dans le forum. Je vois que plusieurs personnes ont (eu) le même problème.Mais aucune réponse à ces questions, sauf une personne qui dit qu'elle a trouvé, mais ne donne pas la référence de la solution ( merci ! ).

Quelqu'un ici a t il cette solution qui éviterait une débauche de code, et qui ravirait aussi apparemment plusieurs codeurs.

Merci et belle journée.

Pierre

10 réponses

Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

La solution serait peut être de créer une collection de TextBox, de Labels, ...

Je fais un exemple :

Dans celui-ci je vais créer 10 TextBox et les rajouter dans la Form. Ensuite, je les rajoute aussi dans la collection TempsTour et ainsi je peux accéder à chacune des TextBox grâce à une boucle et cela fonctionne pour chaque contrôle ( Labels, PictureBox, ...)





Dim
 TempsTour As New Collections.Generic.List(Of TextBox)










For
 nb As Integer =   0  To 9
     ' Boucle créant 10 TextBox

     Dim TextBoxTempsTour As New TextBox

     ' Ajout de la TextBox en cours dans la Form
     Me.Controls.Add(TextBoxTempsTour)

     ' Ajout de la TextBox en cours dans la collection TempsTour
     TempsTour.Add(TextBoxTempsTour)
Next

For nb As Integer  = 0 To 9
     ' Grâce à la collection TempsTour,
     ' On peut accéder à chaque TextBox
     ' et modifier leurs propriétés
     '
     ' TempsTour(0) Première TextBox
     ' TempsTour(1) Deuxième TextBox

     ' On modifie l'emplacement de chaque
     ' TextBox
     TempsTour(nb).Location =   New  System.Drawing.Point(10, nb * 30)

     ' Chaque TextBox aura comme Texte
     ' son index
     TempsTour(nb).Text  = nb
Next







<hr size="2" width="100%" />
J'espère que cette méthode correspond bien à ce que tu recherches Sinon, n'hésites pas

++

Fauve

<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

La propriété Index de quel contrôle (ListView, ...) ? Cette propriété doit s'appeler autrement en VB.NET !

Qu'est ce qui te pose réellement un problème, obtenir le nombre d'item dans un contrôle pour faire une boucle ? Tu peux être un peu plus précis

++

Fauve
<hr size="2" width="100%" />Pensez : Réponse Acceptée 
Messages postés
164
Date d'inscription
samedi 11 décembre 2004
Statut
Membre
Dernière intervention
14 août 2013
2
Bonjour,


Effectivement, on ne peut plus indexer les contrôles.


J'applique le moyen suivant :
1) déclaration des contrôles indicés:


Public Sub New()
        ' Cet appel est requis par le Concepteur Windows Form.        InitializeComponent()
      label(0) = Label1
        label(1) = Label2
        label(2) = Label3
        ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
   End Sub





2) Ensuite, on peut jouer sur les contrôles, par exemple :




    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        For i = 0 To 2

            label(i).Text = "Label " & i

        Next

        label(0).BackColor = Color.Black

       label(1).BackColor = Color.LimeGreen

        label(2).BackColor = Color.Chocolate

    End Sub



J'espère que ça répond à ta question.
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013

Pour Fauve,


J'ai ( entre autres )  10 occurences de 3 TextBox ( TextBoxA Temps du Tour, TextBoxB Meilleur Temps, TextBoxC = Temps moyen ) pour 10 voitures donc.


Je collecte les informations pour 10 voitures : temps du Tour de Car(Index) puis je mets à jour les temps.
Tout cela avec des boucles qui évite trop de code.


Mais j'ai la même chose pour les Labels, les Images, mes PictureBox, des Shapes,..


 


Rien que la définition des objects pouvait être simple ( à lalecture ).


Pourquoi cette facilité a t elle disparu?




Pour Tovin,


Je vais essayer ton approche. Même si cela demande des transferts inutiles ( donc du temps CPU utilisé ).




Merci à vous deux.


Pierre
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013

Intéressant, Fauve

Mais comme je suis "novice", je vais passer un peu de temps à tester ceci.
Retour seulement dans les prochaines heures.

merci

Pierre
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013

Heu !! Au fait que veut dire "Réponse acceptée"?

Je l'ai fait car la réponse me semblait intéressante, mais j'ignore la réelle signification de ceci.

Pierre
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010

celui dont la réponse est accepté gagne un panier garnit
offert par les bons soins du forum...

_____________
 (débutant inside)
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Tyrell2

PeD > Quand tu cliques sur Réponse Acceptée, cela veut dire que la réponse qui a été donné t'a permis de résoudre ton problème mais elle sert aussi aux autres membres qui rencontreront le même problème que toi de trouver une solution

<hr size="2" width="100%" />Pensez : Réponse Acceptée 
Messages postés
226
Date d'inscription
mardi 17 octobre 2000
Statut
Membre
Dernière intervention
1 décembre 2010

Salut,

Et si je veux interagir avec mon textbox : click, keypress, ...
Comment faire ?

du genre :

Private Sub TempsTour_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TempsTour.Click
msgbox TempsTour(nb)
End Sub
Messages postés
226
Date d'inscription
mardi 17 octobre 2000
Statut
Membre
Dernière intervention
1 décembre 2010

Personne ne peut m'aider ?