Référence d'objet d'un label en VB??

Youp!! -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis en train de réaliser un petit utilitaire en VB sur visual 2005.
A un moment j'ai besoin de remplir plusieurs label en fonction d'un test, j'ai alors utilisé le code suivant :

If resultat(i) = reponse(i) Then
score += 1
Me.Controls("Label" & i).Text = "Vrai"
Else : Controls("Label" & i).Text = "Faux"
End If

Le If fait partie d'une boucle qui incrémente i et réalise d'autres actions.
Le problème vient du fait que lors de l'éxécution, j'ai l'erreur suivante qui apparait en sélectionnant la ligne Me.Control... :
"La référence d'objet n'est pas définie à une instance d'un objet."

Et après plusieurs recherches je ne vois toujours pas d'où cela provient.

Vous auriez une idée?
Merci et Bonne soirée

A voir également:

1 réponse

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
En faisant une collection de tes label...
Public Class Form1  
    Private Collect As New Microsoft.VisualBasic.Collection()  
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  
        Dim LB As Control  
        For Each LB In Me.Controls  
            If TypeOf LB Is Label Then  
                Collect.Add(LB, LB.Tag)  
            End If  
        Next LB  
        'Exemple d'emploi....  
        Dim i As Integer  
        For i = 1 To 4  
            Collect(CStr(i)).text = "Texte " & i  
        Next  
        '---------------------------  
    End Sub  
End Class

Mettre les N° des index dans le Tag des contrôles.
Attention : les clés de la collection doivent êtres en string.

A+
Et pour ton cas ça deviendrait...
        If resultat(i) = reponse(i) Then 
            score += 1 
            Collect(CStr(i)).Text = "Vrai" 
        Else : Collect(CStr(i)).Text = "Faux" 
        End If

Ou une autre façon qui pourrait t'apprendre quelque autre fonctions.
        Dim P As Single
        P = (resultat(i) = reponse(i))
        Score += Math.Abs(P)
        Collect(CStr(i)).Text = IIf(P, "Vrai", "Faux")


Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
1