Tableau de Textbox

aj33 Messages postés 8 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 5 février 2020 - 5 févr. 2020 à 13:04
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 5 févr. 2020 à 18:45
Bonjour,

Je viens de m'apercevoir que dans Visual Basic 2019 les tableaux de TextBox étaient de retour , c'est à dire dim Tbx(i,j) as Textbox fonctionne parfaitement.En VB6 j'utilisais beaucoup ces tableaux pour faire des grilles d'affichage d'enregistrements de fichiers 100 fois plus rapide que la quincaillerie de Microsoft.Lors du passage à VB.NET cela ne marchait plus, je me suis débrouillé avec les collections, mais cela n'a pas été simple.Je recherche quelqu'un qui a bien suivi l'actualité de VB6 puis VB.NET qui pourrait m'expliquer ce qui s'est passé.

Cordialement
A voir également:

4 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
5 févr. 2020 à 13:19
Ben en fait ça a toujours marché.
En .net tu peux faire de tableaux de n’importe quel type.

Par contre, une collection est bien plus puissance qu’un tableau.

En fait, ton problème est probablement le même que la grande majorité des anciens vb6istes (moi compris) c’est que vb.net c’est pas du vb, c’est du c# avec une skin vb.

On m’avait conseillé d’apprendre en C#, et je confirme c’est plus facile d’apprendre une nouvelle philosophie de développement (.net c’est tout objet) quand on n’est pas en présence d’un ersatz de vb.
0
aj33 Messages postés 8 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 5 février 2020
5 févr. 2020 à 14:14
Merci pour ta réponse.Je crois que je me suis fait avoir par un prof de fac qui avait écrit dans son polycopié puis son bouquin :
" Dans les versions précédentes de Visual Basic, existait un outil que tout programmeur débutant pouvait maîtriser en quelques coups de cuiller à pot, et qui rendait des services inestimables : les tableaux de contrôles. Cela fonctionnait de la même manière que les tableaux de variables,
et cela ouvrait les mêmes possibilités.
Bref, c'était tellement simple, tellement intuitif et tellement efficace que lorsque VB6 est devenu VB7, autrement dit VB.Net,
eh bien les tableaux de contrôles ont tout simplement disparu.""

--
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
5 févr. 2020 à 15:52
C’est que ça se déclare à la façon de .Net et que ça s’utilise un peu différemment.

0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 5 févr. 2020 à 18:46
Bonsoir
Regarde cette exemple que j'ai commenté ( les cases du jeu sont dans une classe ClassCaseJeu qui hérite de PictureBox)
L'héritage est une notion fondamentale en VB Net, C#, etc......
    Private ReadOnly PictJeu As New List(Of ClassCaseJeu) ' les cases du Jeu
    Private ReadOnly CouleurPion As List(Of Color) = New List(Of Color) From {Color.Black, Color.Yellow, Color.Lime, Color.Red, Color.Magenta}
    Private WithEvents Jeu As New ClassJeu

    Private Chrono As Boolean
    Private Source As String, Destination As String
    Private SourceIndex As Integer, DestinationIndex As Integer
    Private CouleurSource As Integer, CouleurDestination As Integer

    ''' <summary>
    ''' Chargement de la form 
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim CaseJeu As ClassCaseJeu ' on déclare une case du jeu
        Dim CaseLeft As Integer, CaseTop As Integer ' les positions Left et Height de la case du jeu
        Dim Index As Integer = 0 ' pour nommer les CasesJeu ( elles seront nommées dans la classe de "PictJeu0" à "Pictjeu14"
        CaseJeu = Nothing
        CaseTop = 50
        For i = 0 To 4 ' pour une grille de 5 x 5
            CaseLeft = 100
            For j = 0 To 4
                CaseJeu = New ClassCaseJeu(Index, CaseLeft, CaseTop) ' on crée la nouvelle Case du jeu
                PictJeu.Add(CaseJeu) ' on l'ajoute à la List(of ClassCaseJeu)
                AddHandler CaseJeu.MouseDown, AddressOf CaseJeuMouseDown ' évènement Mousedown sur une case quelconque
                Controls.Add(CaseJeu) ' on ajoute la case du jeu sur la Form ( comme elle hérite de PictureBox on affiche une CaseJeu "pictureboxée"
                CaseLeft += 59
                Index += 1
            Next
            CaseTop += 59
        Next
        Initialisation() ' initialisation du jeu

    End Sub
     
     ' clic sur une case du jeu
    Private Sub CaseJeuMouseDown(sender As Object, e As MouseEventArgs)

        Dim SourceIndex as integer = Convert.ToInt32((DirectCast(sender, PictureBox).Name).Substring(7))
         ' suite du code

    End Sub


Pour le clic sur une case du jeu "sender as Object" représente l'object sur lequel on a cliqué . Il faut le "caster" en PictureBox pour y accéder ( c'est une sorte de "conversion" )
. Une fois que l'on peut accéder à la PictureBox on peut avoir sa propriété Name ( de "PictJeu0" à "PictJeu14" . Le Substring permet de ne garder que le nombre 0 à 14 ce qui permet de savoir quelle case du jeu on a cliqué et on y accède par
Pictjeu(SourceIndex).BackColor = Color.Red 
par exemple

0
Rejoignez-nous