Tableau de Textbox

Signaler
Messages postés
8
Date d'inscription
dimanche 23 février 2003
Statut
Membre
Dernière intervention
5 février 2020
-
Messages postés
2235
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
15 septembre 2020
-
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

4 réponses

Messages postés
14758
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2020
433
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.
Messages postés
8
Date d'inscription
dimanche 23 février 2003
Statut
Membre
Dernière intervention
5 février 2020

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.""

--
Messages postés
14758
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2020
433
C’est que ça se déclare à la façon de .Net et que ça s’utilise un peu différemment.

Messages postés
2235
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
15 septembre 2020
113
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