IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

NullReferenceException sur un label ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Par défaut NullReferenceException sur un label ?
    Hello,

    J'ai le l'apparition d'un message me signalant une NullReferenceException ( NullReferenceException) pour l'affectation du texte à un label de ma Form avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("lblG7Valeur_0").Text = CStr(frmMain.MotsWModbus(i + 27))
    alors que j'en ai pas pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblG7Valeur_0.Text = CStr(frmMain.MotsWModbus(i + 27))
    Je ne comprends pas le message d'erreur, car mon label existe bien !!!

    L'intérêt pour moi de la première ligne de code est de pouvoir faire des affectations à plusieurs labels en incrémentant le numéro (ici 0 ) dans la chaine de caractères.

    Quelqu'un a t'il une explication et solution ?

    Merci d'avance

    Ghislain

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.Controls("lblG7Valeur_0").Text = CStr(frmMain.MotsWModbus(i + 27))
    Est-ce que ton controle lblG7Valeur_0 est directement sur ta forme, ou est-il dans un tableau/panel/aut'chose ?

    Parce que si c'est le cas, et si je me rappelle bien (plus de winforms depuis un an), tu dois dans ce cas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.MonPanel.Controls("lblG7Valeur_0").Text = CStr(frmMain.MotsWModbus(i + 27))

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Par défaut
    Mon contrôle (un label) est bien sur ma forme.

    Je ne vois pas ce qui peut être différent entre mes deux codes ????

    Merci de ton aide

    Ghislain

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Essaie en utilisant Me.Controls.Find("lblG7Valeur_0")
    Et teste si le control n'est pas null avant d'accéder à la propriété Text, ça évitera que ça plante lamentablement.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Par défaut
    Désolé SaumonAgile mais ta proposition ne passe pas

    D'autre part mon besoin n'est pas d'identifier la présence du contrôle.
    Celui-ci existe sur la forme et ne pose pas de problème si j'y accède en direct.

    Mon pb est que j'ai plusieurs Contrôles que je veux affecter par le biais d'une boucle FOR/NEXT et la solution d'y accéder par leur nom ne marche pas

    Me suis-je trompé sur la fonction à utiliser pour modifier les propriétés d'un contrôle en le désignant par son nom ?

  6. #6
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    a mon avis le probleme est dans la boucle qui incrémente ce compteur, autrement dit, il ya peut etre une insertion des espaces lors de la concaténation du nom constant des label et le numero d'index qui se concatène avec !
    est ce que tu utilise la fonction str() pour convertir le compteur en chaine de caracteres ? car cette fonction insere des espace avant et apres le nombre

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Par défaut
    Bonjour Subzero

    Le pb ne semble pas venir de la boucle, puisque comme tu peux le voir dans mon premier post je ne l'utilise pas. Je fais directement un appel sur le nom du contrôle.

  8. #8
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("lblG7Valeur_0").Text = CStr(frmMain.MotsWModbus(i + 27))
    une petite question :
    dans ce code, est ce que l'objet Me est le meme objet frmMain ?
    et c'est quoi l'ojet MotsWModbus ?

    je pose ces question car si tu remplace ton code par un code de teste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("lblG7Valeur_0").Text = "test"
    ca marche bien !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. petite question sur les "label"
    Par newixz dans le forum Delphi
    Réponses: 5
    Dernier message: 09/09/2006, 12h04
  2. Réponses: 2
    Dernier message: 07/08/2006, 21h21
  3. [C# 2.0] Pb sur un Label ! :)
    Par hobotalker dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/05/2006, 10h10
  4. Index sur un label
    Par matech dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/03/2006, 18h50
  5. [Debutant]Transparence sur un Label ou GroupBox
    Par ghan77 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 15/12/2005, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo