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

Langages Discussion :

Exception référence objet non définie [Débutant]


Sujet :

Langages

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur amateur
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Par défaut Exception référence objet non définie
    Bonjour à tous,

    Dans mon programme, j'en suis à initialiser les contrôles d'une fenêtre WPF : textbox, label, ...

    Pour ce faire, j'ai fait plusieurs méthodes afin d'initialiser/modifier mes contrôles indépendamment les uns des autres. En voici deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    private void InitClub()
            {
                Para p = new Para();
                Int32 IdClub = p.DonneIdClub();
     
                // Existance :
                if (!Clubs.Existe(IdClub))
                {
                    IdClub = -1;
                    p.EnregistreIdClub(-1);
                }
     
                // Initialisations :
                if (IdClub == -1)
                {   // Pas de club sélectionné :
                    LblNomEtat.Content = "Nom du club à créer :";
                    TxtNomClub.Text = "";
                }
                else
                {
                    if (Clubs.DonneNbClubs() > 1)
                    {
                        LblNomEtat.Content = "Nom du club à modifier ou supprimer :";
                    }
                    else
                    {
                        LblNomEtat.Content = "Nom du club à modifier :";
                    }
                    TxtNomClub.Text = Clubs.DonneNom(IdClub);
                }
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void InitClubInformation()
            {
                LblLongueurNomClub.Content = "Nombre de caractères : " + TxtNomClub.Text.Length + "/" + Cstes.ClubNomLongueur;
            }
    C'est méthodes sont appelées notamment dans l'événement Loaded de la fenêtre.

    La première méthode fonctionne parfaitement mais la deuxième lève l'exception
    System.NullReferenceException: 'La référence d'objet n'est pas définie à une instance d'un objet.'
    et VS pointe sur mon label LblLongueurNomClub.
    J'ai bien compris que VS me signale que cet objet n'a pas été défini mais je ne comprends pas ce qu'il veut de plus.

    Le plus étrange, c'est que si je mets ma ligne de code LblLongueurNomClub.Content = "Nombre de caractères : " + TxtNomClub.Text.Length + "/" + Cstes.ClubNomLongueur; dans la première méthode, il n'y a pas d'exception.

    Le nom de mon label est correct car j'utilise celui que VS me propose lors de sa saisie.

    Rajouté après coup :
    Peut-être un début de réponse : ma deuxième méthode est utilisée deux fois pour le moment. Dans l'événement Loaded de la fenêtre comme indiqué plus haut, mais aussi dans l'événement TextChanged de mon textbox TxtNomClub. Et c'est dans ce dernier que l'exception doit être levée puisque, en mettant en commentaire l'appel à InitClubInformation, pas d'exception ! Mon projet précédent était sous Windows Form est cela ne posait pas de problème.
    Donc, du coup, comment, à partir de l'événement TextChanged de mon textbox, obtenir la fenêtre auquel il appartient ?

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur amateur
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Par défaut
    Pour information, j'ai contourné le problème en changeant d'événement sur ma textbox TxtNomClub. J'ai utilisé KeyUp et ça fonctionne.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    juste pour info, wpf n'est pas prévu pour être utilisé comme windows forms
    par exemple on donne rarement des noms aux contrôles (ce qui fait qu'on ne peut pas y avoir accès par code, mais normalement on a pas besoin d'y accéder par code)
    (voir MVVM pour plus d'infos)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/04/2014, 15h34
  2. Réponses: 16
    Dernier message: 30/10/2008, 18h33
  3. Référence d'objet non définie
    Par Perceuse-Killer dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/06/2008, 19h11
  4. [VBA]ActiveX : objet non défini
    Par gust dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/03/2007, 12h43
  5. Réponses: 4
    Dernier message: 16/06/2006, 00h27

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