Indexer des textbox

Résolu
syberia76 Messages postés 2 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 14 mai 2007 - 8 mai 2007 à 18:28
cs_Jminterroge Messages postés 6 Date d'inscription samedi 2 octobre 2010 Statut Membre Dernière intervention 7 janvier 2014 - 13 oct. 2010 à 13:36
Bonjour,
Je fais un petit programme (Visual Basic 2005) dans lequel je copie les valeurs de 32 Texbox dans 32 variables de type "STRING"
Bien sur, le programme fonctionne en tapant :
Variable(1) = TextBox1.Text
Variable(2) = TextBox2.Text
....
Mais je souhaitais faire une boucle "for next"
J'ai essayé ceci :
For i = 1 to 32
Variable(i) = Me.Controls ("TextBox" & CStr (i)).Text
Next i

J'obtiens un erreur "La référence d'objet n'est pas définie à une instance d'un objet"  Conseil de dépannage "Utilisez le mot clé "new" pour créer une instance d'objet".
Etant donné que je suis débutant , je ne sais pas quoi faire...
Merci par avance pour votre aide et si l'indexation de textbox n'est pas possible en VB2005, je me contenterais du ligne par ligne

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 mai 2007 à 23:19
Au fait, j'ai essayer le code que tu as donné au tout début, avec un tableau de string pour Variable, chez moi il marche sans problème

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 mai 2007 à 18:38
Effectivement l'indexation n'existe plus en .Net. La solution est de passer par les colllections

Sujet régulièrement abordé sur le site, il doit même y avoir quelques sources ici, voire des snippets sur Codyx.org

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 mai 2007 à 18:41
Pour des variables String, tu pourrais aussi, au lieu de faire 32 variables, un tableau de type string de 32 élément, ça serait plus simple.

Dim Variable(31) as String

Sachant que les tableaux partent toujours de 0

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 mai 2007 à 23:17
Voici un petit exemple de création et de travail avec des controles indexés comme en vb6

Tu crée un nouveau projet avec une feuille. Tu affiche la partie code de la feuille et tu y colle ce code dedans entre les lignes Class/ End Class, et tu execute

Ensuite tu balade la souris sur les textbox et tu regarde.
L'évènement MouseEnter se produit lorsque la souris passe au dessu d'un controle, MouseLeave lorsqu'elle le quitte.

' Creation de la collection de textbox
Dim ColTxtBx As New Collections.ObjectModel.Collection(Of TextBox)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
MyBase.Load

        '--- Préparation du
contexte -----------------------------------------
        Me.Size = New Size(700, 900)
        Dim bt As New Button
        bt.Location = New Point(500, 100)
        bt.Text = "Colorer les textboxs"
        bt.AutoSize = True
        Me.Controls.Add(bt)
        AddHandler bt.Click, AddressOf Button1_Click
        '---------------------------------------------------------------------

        '--- Creation des textboxs indexées
----------------------------------
        For i As Integer = 0 To 31
                ' Creation de
chaque textbox
                ColTxtBx.Add(New TextBox)
                ' Ajout du nouveau controle à la collection de
controles de la feuille
                Me.Controls.Add(ColTxtBx(i))
                ' Initialisation de quelques propriétés de la
textbox indexée
                ColTxtBx(i).Name = "TextBox
" & (i + 1).ToString
                ColTxtBx(i).Location = New Point(45, 5
+ (ColTxtBx(i).Height + 5) * i)
                ColTxtBx(i).Text = ColTxtBx(i).Name
                ' Abonnement à 2 des évènements de la
textbox
                AddHandler ColTxtBx(i).MouseEnter, AddressOf ColTxtBx_MouseEnter
                AddHandler ColTxtBx(i).MouseLeave, AddressOf ColTxtBx_MouseLeave
        Next
        '---------------------------------------------------------------------
End Sub

Private Sub ColTxtBx_MouseEnter(ByVal sender As Object, ByVal e
As System.EventArgs)
        ' Récupère
une référence sur le textbox déclencheur
        Dim sd As TextBox = CType(sender,
TextBox)

        ' Modification de quelques
paramètres de la textbox
        sd.Font = New Font(sd.Font, FontStyle.Bold)
        sd.BackColor = Color.Chocolate
        sd.ForeColor = Color.White
End Sub

Private Sub ColTxtBx_MouseLeave(ByVal sender As Object, ByVal e
As System.EventArgs)
        ' Récupère
une référence sur le textbox déclencheur
        Dim sd As TextBox = CType(sender,
TextBox)

        ' Modification de quelques
paramètres de la textbox
        sd.Font = New Font(sd.Font, FontStyle.Regular)
        sd.BackColor = Color.White
        sd.ForeColor = Color.Black
End Sub

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

        '
Travail sur les textbox indexés
        For i As Integer = 0 To ColTxtBx.Count - 1
                ColTxtBx(i).BackColor = Color.Red
        Next
End Sub

Ce n'est qu'un petit exemple très simple. Maintenant il te reste plus qu'a essayer et fouiller pour adapter à tes besoins.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
syberia76 Messages postés 2 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 14 mai 2007
14 mai 2007 à 22:54
Un import à faire peut-être? il ne fct pas chez moi. Je vais fouiller.  Merci
0
cs_Jminterroge Messages postés 6 Date d'inscription samedi 2 octobre 2010 Statut Membre Dernière intervention 7 janvier 2014
2 oct. 2010 à 11:31
Ces derniers temps je me suis décidé à développer à nouveau une ancienne application réalisé à partir de Visual Basic 6.
Sans aucune prétention, j'ai mis en ligne cet exemple d'application sur mon blog Jminterroge-OverBlog

Bien à vous tous s'il peut vous servir.
0
cs_Jminterroge Messages postés 6 Date d'inscription samedi 2 octobre 2010 Statut Membre Dernière intervention 7 janvier 2014
13 oct. 2010 à 13:36
Bonjour,

J'ai complété mon exemple d'indexation des "controls" pour Visual Studio Express version 2008 par trois articles complémentaires que vous trouverez sur mon blog Jminterroge-OverBlog.

A bientôt sur un autre thème.
0
Rejoignez-nous