Apparement tu lis en diagonal !!
Le tableau est un ensemble de TextBox !
Je répète le principe ...
Tu déclares un tableau à 2 dimensions de type TextBox dans ton formulaire.
Dim MonTableau(10,10) as TextBox
Dans ton constructeur, tu affectes les références de chaque TextBox dans ton tableau.
Ex pour txt11 (Colonne 1, Ligne 1) :
et ainsi de suite pour tous tes controls TextBox
Ensuite tu peux récupérer les controls TextBox via le tableau.
1 2 3 4 5 6 7 8
|
For i = 1 to 10
For j = 1 to 10
If MonTableau(i,j).Text <> "" Then
matrice(1,1) = MonTableau(i,j).Text
End if
Next j
Next i |
Si ça t'ennuie de remplir manuellement ton tableau dans le constructeur, tu peux toujours créer un algorythme pour charger le tableau en fonction du nom du TextBox
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
Public Sub New()
MyBase.New()
'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
'Ajoutez une initialisation quelconque après l'appel InitializeComponent()
CreerTableauTextBox(Me)
End Sub
'*** Algorythme de création du tableau de TextBox
Private Sub CreerTableauTextBox(ByVal ObjCtrlParent As System.windows.forms.Control)
Dim objCtrl As System.Windows.Forms.Control
Dim Str_Name As String
Dim Int_Col As Integer
Dim Int_Lig As Integer
' Si c'est un container
If ObjCtrlParent.Controls.Count > 0 Then
' Pour tous les controls enfants
For Each objCtrl In ObjCtrlParent.Controls
CreerTableauTextBox(objCtrl)
Next
End If
' Si le composant est un TextBox
If TypeOf ObjCtrlParent Is System.Windows.Forms.TextBox Then
' Récupération du nom du control
Str_Name = ObjCtrlParent.Name
' Le nom ne contient que 5 caractères
If Str_Name.Length <> 5 Then Exit Sub
' Le nom commence par txt
If Not Str_Name.Substring(0, 3).ToUpper = "TXT" Then Exit Sub
' Le 4eme caractère doit être numérique
If Not Char.IsDigit(Str_Name.Substring(3, 1)) Then Exit Sub
' Le 5eme caractère doit être numérique
If Not Char.IsDigit(Str_Name.Substring(4, 1)) Then Exit Sub
' Récupération de la colonne et de la ligne
Int_Col = CInt(Str_Name.Substring(3, 1))
Int_Lig = CInt(Str_Name.Substring(4, 1))
' Insertion du textBox dans le tableau
MonTableau(Int_Col, Int_Lig) = ObjCtrlParent
End If
End Sub |
ou autre solution, comme l'a suggéré très justement Alexandre, tu peux créer tes TextBox dynamiquement et les affecter au tableau directement.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
'*** Algorythme de création du tableau de TextBox
Private Sub CreerTableauTextBox()
Dim Int_Col As Integer
Dim Int_Lig As Integer
Dim objTextBox As System.Windows.Forms.TextBox
For Int_Col = 1 To 10
For Int_Lig = 1 To 10
' Nouvelle instance TextBox
objTextBox = New System.Windows.Forms.TextBox
' On affecte le control au conteneur
'(Ex si le conteneur est un panel (MonPanel.Controls.add (objTextBox))
' Si c'est le formulaire qui est directement le conteneur (Me.Controls.Add(objTextBox)
' Dans cet exemple, on suppose que c'est le formulaire le conteneur des controls TextBox
Me.Controls.Add(objTextBox)
With objTextBox
.Name = "txt" & Int_Col.ToString & Int_Lig.ToString ' Pas obligatoire
.Top = CalculerTopTextBox(Int_Lig)
.Left = CalculerLeftTextBox(Int_Col)
'.Size = new system.Drawing.Size(x,y) ' A toi de le définir
'... définitions des autres propriétés qui te semblent utile
.Visible = True
End With
' Ajout de la référence créée au Tableau
MonTableau(Int_Col, Int_Lig) = objTextBox
Next
Next
End Sub |
Si avec ça tu ne t'en sors pas, je crois qu'on ne pourra plus grand chose pur toi !
Partager